2016-11-08 49 views
1

フォーム名とそのパラメータを設定するのは混乱します。ここで Rails number_field_tagはハッシュ値を渡します

はのparamsは、この

"monster" => { 
    "1,MonsterA" => "10", 
    "2,MonsterB" => "25" 
} 

を得るでしょう私のフォーム

<%= form_tag('/monster) do %> 
    <% @monsters.each do |monster| %> 
    <tr> 
     <th scope="row"><%= monster.id %></th> 
     <td><%= t("backpack.mon_infos.#{monster.name}.name") %></td>     
     <td><%= number_field_tag "monster[[#{monster.id},#{monster.name}]]", 0 %></td> 
    </tr> 
    <% end %> 
<% end %> 

あるしかし、私はそれになりたい

"monster" => { 
    "1" => {'name': 'MonsterA' ,'quanty': "10"}, 
    "2" => {'name': 'MonsterB' ,'quanty': "25"} 
} 

答えて

1

あなたはこの試みることができます:

<%= form_tag('/monster) do %> 
    <% @monsters.each do |monster| %> 
    <tr> 
     <th scope="row"><%= monster.id %></th> 
     <td><%= t("backpack.mon_infos.#{monster.name}.name") %></td>     
     <%= hidden_field_tag "monster[#{monster.id}][name]", monster.name %> 
     <td><%= number_field_tag "monster[#{monster.id}][quantity]", 0 %></td> 
    </tr> 
    <% end %> 
<% end %> 
2

ブレークアップidnameの値に変換するように自分自身[id][name]。 2番目のレベルのハッシュを取得するには、2番目のキーを作成して値にマッピングします。

<% @monsters.each do |monster| %> 
    <tr> 
    <th scope="row"><%= monster.id %></th> 
    <td><%= t("backpack.mon_infos.#{monster.name}.name") %></td> 
    <td><%= number_field_tag "monster[#{monster.id}]['name']", monster.name %></td> 
    <td><%= number_field_tag "monster[#{monster.id}]['quanty']", monster.quanty %></td> 
</tr> 
<% end %> 
+0

それは近いのですが、それは ' "モンスター"=> { "1"=>​​ { "モンステラ"=> "10"}となり、 "2" => {"MonsterB" => "25"} ' –

+0

更新されましたが、おそらく値の一部を表示したくないことに気付きました。それはあなたが@JagdeepSingh答えと一緒に行きたいということを意味するかもしれません。 –

+0

はい、ご協力いただきありがとうございます –

関連する問題