繁体   English   中英

通过form_for创建的表中的复选框

[英]checkboxs in a table created via form_for

我是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

这里的问题是,通过check_box不能选择多个用户。 为了选择多个数据,您需要使用f.collection_select

这是如何做:

<%= f.collection_select :user_id, @users, :id, :name, {prompt: "Please select collaborators"}, {multiple: true} %>

要选择多个,复选框的名称不应为: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的用户

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM