rails5.2です。
railsドキュメントを見ましたが分かりませんでした。
https://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select
https://railsdoc.com/page/collection_select
検索画面なので、f.や関連オブジェクト無しでcollection_selectを使いたいです。
欲しいparamsは、search[prefecture_id]です。
以下のようにしました。
ruby
1<%= collection_select :search, :prefecture_id, Prefecture.all, :id, :name, include_blank: "" %>
すると以下のエラーになりました。
NoMethodError in Items#index undefined method `prefecture_id' for #<ActionController::Parameters:0x00007f55988b6060> Did you mean? presence_in
エラーメッセージの原因は、
「searchというオブジェクトにprefecture_idというメソッドが見つからない」という事かと思いますが、そもそもserachというモデルは作ってません。
なので「select_tag」のように、
以下のようにparams指定の箇所を、
""で囲ってみました。
ruby
1<%= collection_select "search[prefecture_id]", Prefecture.all, :id, :name, include_blank: "" %> 2
すると以下のエラーになりました。
undefined method `map' for :id:Symbol Did you mean? tap
mapの中からメソッド(:id)を探しに行って見つからない→
やはり第2引数には、メソッドを指定しなきゃいけないのかなと解釈しました。
そこで以下のように第2引数を空にしました。
ruby
1 <%= collection_select "search[prefecture_id]", "" Prefecture.all, :id, :name, include_blank: "" %> 2
エラーは解消しましたが、生成されたhtmlが
serach[prefecture_id][]
でした(泣)
欲しいのは、
serach[prefecture_id]
です。
どのように指定するのでしょうか?
諸先輩方教えて下さい。
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー