Rails 3只返回最后一个元素

时间:2011-04-14 22:30:08

标签: ruby-on-rails-3 forms checkbox

我正在尝试构建一个表单,列出所有用户并允许您检查要添加到团队的表单。这是我在表格中的第一次剪辑:

<div id="add_team_mates">
  <%= form_tag do %>
  <%= will_paginate @users %>
  <ul class="users">
    <% @users.each do |user| %>
    <li>
      <%= gravatar_for user, :size => 30 %>
      <%= link_to user.name, user %>
      <%= check_box_tag("add", user.id) %>
    </li>
    <% end %>
  </ul>
  <%= submit_tag "Add Team Mates", :action => "add_team_mates" %>
  <% end %>
</div>

而且,现在这就是我在控制器中所拥有的一切:

def add_team_mates

end

问题在于,如果我检查多个用户,我只会得到最后一个user.id而不是多个就像我期望的那样。以下是日志中的一些示例:

Started POST "/teams/5" for 127.0.0.1 at 2011-04-14 15:28:13 -0700
  Processing by TeamsController#add_team_mates as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"IHFDevfKES8NibbCMlRa1t9qHn4/ZMKalK1Kjczh2gM=", "add"=>"3", "commit"=>"Add Team Mates", "id"=>"5"}
Completed   in 12ms

对此的任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:2)

您的所有复选框都具有相同的名称,请将行更改为 check_box_tag("add[]",user.id)

在控制器中,您的参数将如此:

params[:add] = ['foo','bar','baz']