19480

[code]

    class NewsArticleSearchCondition
     include ActiveModel::Model
     attr_accessor :keywords
    end
    
[/code]

上記の`ActiveModel::Model`を`include`するクラスがあったとして、これを検索フォームに利用したいと考えています。そこでコントローラで初期化して使ってみました。

[code]

    def index
      @search_condition = NewsArticleSearchCondition.new
    end
    
[/code]

ヴューも見よう見まねで用意してみました。

[code]

    <h1>Title</h1>
    <%= form_for @search_condition, url: search_news_articles_path do |f| %>
     <%= f.text_field :keywords %>
     <%= f.submit '検索' %>
    <% end %>
    
[/code]

ページの表示に問題はないものの、検索を実行すると失敗でした。  
`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

[code]

    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'
    
[/code]


CC BY-SA 3.0
2015-11-30T13:46:39.843
19479
2015-12-01T01:30:49.580
2015-12-01T01:30:49.580
9403
9403
question
ruby-on-rails
ActiveModelをform_forに使えない


コードが無いので推測になりますが、`NewsArticlesController#search` の中で `@search_condition`
を設定していないのだと思います。


CC BY-SA 3.0
2015-11-30T14:47:03.473
19480
2015-11-30T14:47:03.473
76
19479
answer