这是我的代码:
<%=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....
我希望用户做出多项选择,以决定他/她想要添加到以下列表中的哪些群组。
所以我制作了几个与'user_group_id'和不同ID同名的复选框。 我可以通过参数[:user_group_id]成功获取参数,如果用户只选中了一个框。但是如果他真的检查了其中几个,那么如何在控制器中设置这个值?在这种情况下,params [:user_group_id]只能获得其中一个。我完全相信代码:params [:user_group_id_ + XXX.id]不会起作用....
答案 0 :(得分:5)
如果你用user_group_id['+ug.id+']
之类的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%>
因此,params[:user_group_id].first
将包含所选第一个复选框的ID。
答案 1 :(得分:0)
如果你这样做&lt;%= check_box_tag'user_group_id []'%&gt;它返回了所选id的数组,
<%=check_box_tag 'user_group_id',ug.id, params[:user_group_id].try(:include?,ug.id.to_s),{:id=>'user_group_id_'+ug.id.to_s}%>