0

モデル

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

それを手伝ってもらえますか?

4

1 に答える 1

0

以下のようにしてみてください。

<%= collection_check_boxes(:student, :subject_ids, Student.order('name'), :id, :name) do |b| %>
   <%= b.check_box %>
   <%= b.label %>
<% end %>

私が学生と科目の多対多の関係を持っているところ。collection_check_box はそれ自体で繰り返されます。

問題が発生した場合はお知らせください...

于 2016-08-10T11:38:02.487 に答える