2017-02-24 4 views
0

のオブジェクト引数として配列内のオブジェクトを使用する必要があります。form_tagヘルパーを使用していますが、パラメータのハッシュが正しくフォーマットされていません。Rails:配列内のオブジェクトをcollection_selectのオブジェクト引数として使用

例:この中

<%= form_tag(picks_path, method: :post) do %> 
    <% @awards.each do |award| %> 

    <%= hidden_field_tag "picks[][user_id]", 1 %> 
    <%= hidden_field_tag "picks[][game_id]", 1 %> 
    <%= hidden_field_tag "picks[][award_id]", award.id %> 

    <%= label_tag "picks[][:first_pick]", "First Pick" %> 
    <%= collection_select("picks[][:first_pick]", 
     :first_pick, award.nominations, :id, :nominee) %> 

    <% end %> 

<%= submit_tag 'Submit' %> 
<% end %> 

結果、余分な営巣してハッシュparamsは...

"picks"=>[{"user_id"=>"1", "game_id"=>"1", "award_id"=>"1", ":first_pick"=>{"first_pick"=>"1"}}, {"user_id"=>"1", "game_id"=>"1", "award_id"=>"2", ":first_pick"=>{"first_pick"=>"3"}}] 

私が本当に欲しいことはこれです...

"picks"=>[{"user_id"=>"1", "game_id"=>"1", "award_id"=>"1", "first_pick"=>"1"}, {"user_id"=>"1", "game_id"=>"1", "award_id"=>"2", "first_pick"=>"3"}] 

私はこれを使ってみました...

<%= collection_select("picks[]", :first_pick, award.nominations, :id, :nominee) %> 

しかし、私はこの例外を得ました...

オブジェクト[]の命名が、オブジェクトのparamと@objectのVaRはto_paramしない 応答が存在したりしません。

アムnilを私はここでいくつかの特別な構文がないか、これは1つの送信ボタンでフォームから複数のエントリを達成する従来の方法ではありませんか?

答えて

0

、このような何かをしようとeach.inject

<% @awards.each.inject([]) do |collection_select, award| %> collection_select << { first_pick: award[:first_pick], nominations: award[:nominations], id: award[:id], nominee: award[:nominee]}

If your award main object don't hold some values, u can hard coded it in each hash value i.e: id: 1, nominee: 'anything'

はそれが役に立てば幸い。

関連する問題