簡體   English   中英

Rails:使用數組中的對象作為collection_select的對象參數

[英]Rails: Using an object in an array as the object argument for collection_select

我需要在使用form_tag幫助器的表單中使用數組中的對象作為collection_select的對象參數,但我的params散列未正確格式化。

例:

<%= 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 %>

結果在這個參數哈希與額外的嵌套...

"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) %>

但我得到了這個例外......

object []命名但是對象參數和@object var不存在或者不響應to_param:nil

我在這里缺少一些特殊的語法,或者這不是通過一個提交按鈕從表單中實現多個條目的傳統方法嗎?

嘗試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 ie: id: 1, nominee: 'anything'

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM