3

レール 4 を使用しています。Blends、Addons、AddonPairings の 3 つのモデルがあります。ユーザーがブレンドを作成し、

Blend
  have_many :addon_pairings
  have_many :addons, through: :addon_pairings

Addon
  have_many :addon_pairings
  have_many :blends, through: :addon_pairings

AddonPairing
  belong_to :blend
  belong_to :addon

私のアドオンはすべてデータベースで事前に作成されており、ユーザーはブレンドにアタッチしたいだけ選択できます。

new.html.erbのブレンドのための私の中で

<%= form_for [current_user, @blend] do |f| %>

    <div class="form-group">
        <%= f.label :addons,  "Add some addons to your blend" %>
        <%= f.collection_check_boxes :addon_ids, Addon.all, :id, :name %>
    </div>

    <div class="form-group">
        <%= f.submit class: "btn btn-lg btn-primary" %>
    </div>
<% end %>

私のブレンドコントローラー

def create
    @user = User.find(params[:user_id])
    @blend = @user.blends.build(blend_params)
    if @blend.save
        redirect_to @user, notice: "Your blend has been created."
    else
        flash.now[:notice] = "Something went wrong. Please check the errors below."
        render 'new'
    end
  end
private

def blend_params
        params.require(:blend).permit(:name, :addon_ids)
    end

addon_pairingsコントローラーに、ブレンドを選択したアドオンに接続するレコードをテーブルに作成させるにはどうすればよいですか? ありがとう。

4

2 に答える 2