我是RoR的新手,如果答案非常简单,请道歉。我正在尝试创建一个表,允许用户选择可以在Wiki上进行协作的其他用户。我遇到的问题是,无论您在桌面上选择哪个复选框。它只切换最顶层的选项。
这是有问题的代码:
<%= form_for [@wiki, @wiki.collaborators.build] do |f| %>
<table class="bordered hoverable">
<tbody>
<% @users.each do |user| %>
<tr>
<td><%= user.name %></td>
<td class="right-align"><%= f.check_box :user_id %><%= f.label :user_id, "Give Access" %></td>
</tr>
<% end %>
</tbody>
</table><br /><br />
新的
中的控制器值def new
@wiki = Wiki.find(params[:wiki_id])
@collaborator = Collaborator.new
@users = (User.all - [current_user])
end
答案 0 :(得分:0)
这里的问题是,通过check_box
,您无法选择多个用户。要选择多个数据,您需要使用f.collection_select
。
以下是:
<%= f.collection_select :user_id, @users, :id, :name, {prompt: "Please select collaborators"}, {multiple: true} %>
答案 1 :(得分:0)
要选择多个,复选框的名称不应为:user
,而是包含用户ID。尝试类似的东西:
<%= form_for [@wiki, @wiki.collaborators.build] do |f| %>
<%= f.fields_for :collaborators do |c| %>
<table class="bordered hoverable">
<tbody>
<% @users.each do |user| %>
<tr>
<td><%= user.name %></td>
<td class="right-align"><%= c.check_box user.id %><%= f.label user.id, "Give Access" %></td>
</tr>
<% end %>
</tbody>
</table><br /><br />
<% end %>
<% end %>
然后控制器会收到这样的参数:
{:collaborators => {1 => '0', 2 => '1'}
显示未检查ID为1的用户,检查了ID为2的用户