Rails number_field_tag传递哈希值

时间:2016-11-08 07:18:18

标签: ruby-on-rails ruby

我对设置表单名称及其参数感到困惑。

这是我的表格

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

2 个答案:

答案 0 :(得分: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 %>

答案 1 :(得分: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 %>