ActiveModelをform_forに使えない
class NewsArticleSearchCondition
include ActiveModel::Model
attr_accessor :keywords
end
上記のActiveModel::Model
をinclude
するクラスがあったとして、これを検索フォームに利用したいと考えています。そこでコントローラで初期化して使ってみました。
def index
@search_condition = NewsArticleSearchCondition.new
end
ヴューも見よう見まねで用意してみました。
<h1>Title</h1>
<%= form_for @search_condition, url: search_news_articles_path do |f| %>
<%= f.text_field :keywords %>
<%= f.submit '検索' %>
<% end %>
ページの表示に問題はないものの、検索を実行すると失敗でした。
ActionView::Template::Error (First argument in form cannot contain nil or be empty)
というエラーが出てくるのですが、コントローラで明らかにオブジェクトを生成しているのにnil
か空のオブジェクトが指定されていると指摘されており、困惑しています。
使い方のどこが間違っているのか分かりません。ご教示お願いします。
rails 4.1.4
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
OS: CentOS 6.6
I, [2015-11-30T13:33:53.767016 #19474] INFO -- : Started POST "/master/news_articles/search" for 10.0.2.2 at 2015-11-30 13:33:53 +0000
I, [2015-11-30T13:33:53.769260 #19474] INFO -- : Processing by NewsArticlesController#search as HTML
I, [2015-11-30T13:33:53.770050 #19474] INFO -- : Parameters: {"utf8"=>"?", "authenticity_token"=>"2Vgd2hKSsyLBhoYOUU4xN2ufoYfNZ42cfRBt8CdVoN8=", "news_article_search_condition"=>{"keywords"=>"sss"}, "commit"=>"検索"}
I, [2015-11-30T13:33:53.807700 #19474] INFO -- : Rendered news_articles/index.html.erb within layouts/application (30.7ms)
I, [2015-11-30T13:33:53.808130 #19474] INFO -- : Completed 500 Internal Server Error in 38ms
F, [2015-11-30T13:33:53.809900 #19474] FATAL -- :
ActionView::Template::Error (First argument in form cannot contain nil or be empty):
1: <h1>Title</h1>
2: <%= form_for @search_condition, url: search_news_articles_path do |f| %>
3: <%= f.text_field :keywords %>
4: <%= f.submit '検索' %>
5: <% end %>
app/views/news_articles/index.html.erb:2:in `_app_views_news_articles_index_html_erb___2506405902150851388_75157400'
app/controllers/news_articles_controller.rb:88:in `search'