1

私は2つのモデルを持っています(わかりやすくするためにコードは編集されています):

class App < ActiveRecord::Base
  has_and_belongs_to_many :products
end

class Product < ActiveRecord::Base
  has_and_belongs_to_many :apps
end

各アプリに複数の製品を追加できるようにしたい。また、アプリ内の商品の順番も重要で、困っているところ。

私は simple_form を使用しており、関連付けメソッドを使用してみました:

<%= simple_form_for(@app) do |form| %>
  <%= form.input :name %>
  <%= form.association :products %>
  <%= form.button :submit %>
<% end %>

それは素晴らしく機能しますが、それが作成する選択ボックスは注文できません。解決策として、複数の<select>ボックスを作成し、それらを何らかの方法で注文することを試みました。これはこれまでのところ機能していません。テストとして、私はこれを試しました:

<%= form.collection_select('product_ids', Product.all, :id, :name, {}, {name: 'app[product_ids][]'}) %>
<%= form.collection_select('product_ids', Product.all, :id, :name, {}, {name: 'app[product_ids][]'}) %>
<%= form.collection_select('product_ids', Product.all, :id, :name, {}, {name: 'app[product_ids][]'}) %>
<%= form.collection_select('product_ids', Product.all, :id, :name, {}, {name: 'app[product_ids][]'}) %>

実際にはデータベースで関連付けを行いますが、選択タグごとにすべての製品を「選択」し、最終的にすべての製品の最後の製品を選択するだけです。

<select id="app_product_ids" name="app[product_ids][]">
  <option selected="selected" value="1">Golf Club</option>
  <option value="20">Music Disc</option>
  <option selected="selected" value="17">Magic Wand</option>
  <option value="15">Nike Running Shoes</option>
  <option selected="selected" value="19">Watch</option>
  <option selected="selected" value="16">Wooden Spoon</option> // this is what is selected in the browser
</select>

最終的には、これらの動的な追加と削除を行います。

だから私の質問は、どうすればこれを機能させることができますか? <select>1 つの方法は、すべての製品ではなく、特定の製品に各関連付けを行うことです。一緒にもっと良い方法があるかもしれません。

4

0 に答える 0