2015-06-27 55 views
0

我是RoR的新手,所以如果答案非常簡單,請道歉。我正在嘗試創建一個表格,允許用戶選擇可以在wiki上進行協作的其他用戶。我遇到的問題是無論您在桌面上選擇哪個複選框。它只切換最上面的選項。通過form_for創建的表格中的複選框

這裏是有問題的代碼:

<%= 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

這裏的問題是,通過check_box的你不能選擇一個以上的用戶。爲了選擇多個數據,您需要使用f.collection_select

方法如下:

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

這只是一個選項,如果表格佈局不是強制性的... –

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 %> 

控制器將隨後收到PARAMS這樣的:

{:collaborators => {1 => '0', 2 => '1'} 

顯示ID爲1該用戶未選中,ID爲2的用戶進行檢查