1

私はレールが初めてで、その問題を解決できません。

私は3つのモデルを持っています。注文、製品、および品目。商品ごとにチェックボックスがあるオーダーフォームが欲しいです。ユーザーは適切な製品を選択し、注文を送信します。

正しいハッシュを作成するためのフォームを取得できません。

class Order < ActiveRecord::Base
  attr_accessible :account_id, :user_id

  has_many :line_items, :dependent => :destroy
end

class LineItem < ActiveRecord::Base
  attr_accessible :account_id, :product_id, :order_id

  belongs_to :orders
  belongs_to :product
end

ここでビュー:

<%= form_for 'line_items[]' do |f|  %>
   <%= f.select :account_id, options_from_collection_for_select( Account.all, 
       :id, :name ), :prompt => 'Select Account' %>

<% Product.all.each do |product| %>
<div>
       <%= check_box_tag 'line_items[product_ids][]', product.id %>
</div>
<% end -%>

    <div>       
    <%= f.submit 'save' %>
</div>

ありがとう!

4

1 に答える 1

0

accepts_nested_attributes_for関連モデルからのネストされた属性を有効にするには、モデルでを使用する必要があります。このRailscastをチェックして、ニーズに合わせることもできます。

たとえば、注文モデルでは次のようになります。

class Order < ActiveRecord::Base
  attr_accessible :account_id, :user_id

  has_many :products #This makes the association to products
  has_many :line_items, :dependent => :destroy

  accepts_nested_attributes_for :products #This allows the attributes from products accessible
end

次に、フォームは次のようになります。

<%= form_for @order do |f| %>

  <%= f.select :account_id, options_from_collection_for_select( Account.all, 
       :id, :name ), :prompt => 'Select Account' %>

  <%= f.fields_for :product do |product_form| %>
    <%= product_form.check_box :id  %>
  <% end %>

  <%= f.submit %>
<% end %>
于 2012-12-10T06:25:43.703 に答える