0

在我的數據庫中,我有兩個具有多對多關係的表,因此我創建了關係表。僅針對項目中的用戶選中複選框

Projects 
Users 
Project_users <-- members of a project 

我正在編輯一個項目,該項目包含一個形式的所有項目領域的看法,併爲項目的成員我呈現出複選框。這是有效的,但是通過下面的代碼檢查所有複選框,即使對於不是該項目成員的用戶也是如此。

那麼,我應該如何更改代碼,以便只檢查當前項目成員的複選框?

編輯項目視圖:

<%= form_for @project do |f| %> 
    ... 
     the rest of the form 
    ... 
    <div class="checkbox"> 
     <% @members.each do |user| %> 
      <%= check_box_tag "project[members][]", user.id, '1', :id => "user_#{user.id}" %> 
      <%= label_tag "user_#{user.id}", user.first_name + ' ' + user.last_name, :class => "checkbox" %> 
     <% end %> 
    </div> 
    ... 
     the rest of the form 
    ... 
<% end %> 

項目控制器:

... 
def edit 
    @project = Project.find(params[:id]) 
    @members = @project.users 
end 
... 

回答

1

的第三個參數的是用於檢查(ED)狀態的布爾:

參見文檔:check_box_tag(name, value = "1", checked = false, options = {})

你的情況:

<% should_be_checked = @project.users.include?(user) %> 
<%= check_box_tag "project[members][]", user.id, should_be_checked, :id => "user_#{user.id}" %> 
+0

感謝您的回答!試了一下,得到以下錯誤:.../edit.html.erb:26:語法錯誤,意外'=' \t \t should_be_checked? = project.users.include?(user) – holyredbeard 2013-02-11 21:53:38

+0

嘗試不使用'?' – MrYoshiji 2013-02-11 21:54:23

+0

它在我向project.users ...(@project.users ...)中添加'@'並在控制器中更改爲User.all後工作。非常感謝! – holyredbeard 2013-02-11 21:57:25

相關問題