モデル
class Rfq < ActiveRecord::Base
belongs_to :purchase
belongs_to :supplier
belongs_to :customtemplate
end
class Purchase < ActiveRecord::Base
belongs_to :order
#Products
has_many :purchase_products, dependent: :destroy
has_many :products, through: :purchase_products
accepts_nested_attributes_for :purchase_products, allow_destroy: true
validates :code, uniqueness: true
validates :code, presence: true
validates :order_id, presence: true
end
class Supplier < ActiveRecord::Base
has_many :products, dependent: :destroy
accepts_nested_attributes_for :products, allow_destroy: true
validates :code, uniqueness: true
validates :code, presence: true
end
class Customtemplate < ActiveRecord::Base
has_many :supplier_templates, dependent: :destroy, :foreign_key => 'customtemplate_id'
has_many :suppliers, through: :supplier_templates
validates :code, uniqueness: true
validates :code, :body, presence: true
end
rfqs_controller
class RfqsController < ApplicationController
(..)
def new
@rfq = Rfq.new
#@purchase_products = PurchaseProduct.where(purchase_id: params[:purchase_id])
#RFQ for one purchase
if params[:purchase_id].present?
@a_products_suppliers = []
products = Purchase.find(params[:purchase_id]).products
@suppliers = products.select(:supplier_id).uniq
products.each do |p|
@a_products_suppliers.push(p.supplier_id => p.id)
#binding.pry
end
end
binding.pry
end
(..)
モデル フィールドの 1 つは、配列型として定義されている「products」です。
コントローラーから、@a_products_suppliers で [{supplier_id=>product_id}] の形式でハッシュの配列を受け取ります
(#<RfqsController>)> @a_products_suppliers
=> [{9=>5}, {9=>4}]
形
<% @suppliers.each do |s| %>
<%= simple_form_for @rfq do |f| %>
<%= f.error_notification %>
<h3>Products</h3>
<% @a_products_suppliers.each do |a| %>
<%= f.collection_check_boxes a[s.supplier_id] ???
<% end %>
<%= f.button :submit %>
<% end %>
<% end %>
ユーザーがチェックボックスを使用してテーブルrfqsの「製品」列に保存する製品を定義できるように、各製品をリストする方法がわかりません。
ラベルは次のように書くことで取得できます:Product.find(a[s.supplier_id]).code
それを手伝ってもらえますか?