2017-02-24 4 views
0

배열의 객체를 collection_select의 객체 인자로 form_tag 헬퍼를 사용하는 형식으로 사용해야하지만 params 해시의 형식이 올바르지 않습니다. 이에레일즈 : 배열의 객체를 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하지 응답하지 않습니다

암 전무를 여기에 특별한 구문이 없거나 하나의 제출 버튼이있는 양식에서 여러 항목을 얻는 일반적인 방법이 아닙니까? 이 같은

답변

0

시도 each.inject, 뭔가 :

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'

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

그것이 도움이되기를 바랍니다.