3

次のように、多対多の関連付けを持つ2つのモデルがあります。

class User < ActiveRecord::Base
    has_many :remark_users, :dependent => :destroy
    has_many :designated_remarks, :through => :remark_users, :source => :remark
end

class Remark < ActiveRecord::Base
     has_many :remark_users, :dependent => :destroy
    has_many :users, :through => :remark_users

    accepts_nested_attributes_for :users
end

そして関係:

class RemarkUser < ActiveRecord::Base
    belongs_to :remark
    belongs_to :user
end

保存を行う remarks_controller アクション:

# PATCH Save users
def save_users
    @remark = Remark.find(params[:id])
    @remark.users.build(params[:remark_user_ids])
    @remark.save
end

そしてフォーム:

<%= form_for @remark, :url => salveaza_responsabili_remark_path(@remark) do |f| %>
    <% @users.each do |user| %>
        <%= check_box_tag 'remark[remark_user_ids][]', user.id, @remark.users.include?(user) %>
        <%= user.name %>
    <% end %>
    <%= hidden_field_tag 'remark[remark_user_ids][]', '' %>
<% end %>

remarks_controller:

params.require(:remark).permit(:description, :suggestion, :origin_details,  process_type_id, :origin_id, :remark_user_ids)

User と Remark の両方が既に存在します。できればチェック ボックスを使用して、関連付けを作成するためだけのフォームが必要です。

コンソールでは、関連付けが保存されます。しかし、私は最終日をブラウザで動作させることに費やしました。この件に関して見つけたものはすべて読みましたが、今は非常に混乱しています。

誰かが実際のフォームがどのように見える必要があるか、またコントローラーに何かを追加する必要があるかどうかを教えてもらえますか?

4

1 に答える 1