如何从rails3控制器中的复选框获取参数

Yit*_*hou 3 checkbox ruby-on-rails ruby-on-rails-3

这是我的代码:

<%=form_tag('/user_group_follows/follow',:id=>'follow_select_form',:remote=>true,:method=>:get) do %>
    <p>You want to add this user to?</p>
    <%=hidden_field_tag 'user_id',@user.id%>
    <%@user.user_groups.each do |ug|%>
        <%=check_box_tag 'user_group_id',ug.id,false,{:id=>'user_group_id_'+ug.id.to_s}%><%=ug.name%><br/>
    <%end%>
<%end%>
//using jquery-ui, so there is no submit button....
Run Code Online (Sandbox Code Playgroud)

我希望用户做出多项选择,以决定他/她想要添加到以下列表中的哪些组.

所以我制作了几个与'user_group_id'和不同ID同名的复选框.如果用户只选中了一个框,我可以通过参数[:user_group_id]成功获取参数.但如果他真的检查了其中几个,如何在控制器中设置这个值?在这种情况下,params [:user_group_id]只能获得其中一个.我相信代码如:params [:user_group_id_ + XXX.id]不会起作用....

jef*_*unt 5

如果你用id来命名它们user_group_id['+ug.id+'],我认为你应该得到params[:user_group_id]一个类似于其中应该包含已检查的所有组ID的数组的参数.

像这样的东西,确实不确定,但基本上你想要命名你的字段,以便它们自然地分组成一个数组,因为它们的命名方式如下:

<%=check_box_tag 'user_group_id['+ug.id']',ug.id,false,{:id=>'user_group_id_'+ug.id.to_s}%><%=ug.name%>
Run Code Online (Sandbox Code Playgroud)

因此,params[:user_group_id].first将包含所选第一个复选框的id.