2016-11-08 58 views
1

我很困惑設置窗體名稱及其參數。Rails number_field_tag傳遞散列值

這裏是我的形式

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

】這個params會得到這個

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

但我希望它像

"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]。要獲得二級散列,請創建第二個鍵並將其映射到該值。

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

是的,但仍然感謝您的幫助 –