0

私のデータベースには、多対多のリレーションシップを持つ 2 つのテーブルがあり、そのためリレーションシップ テーブルを作成しました。

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
...
4

1 に答える 1

1

の 3 番目の引数check_box_tagは、check(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}" %>
于 2013-02-11T21:48:43.370 に答える