0

ユーザーが Cookie に保存されている製品を選択する注文システムがあります。注文ページに進むと、システムによって取得されます。

@order = Order.new
unless @cart.nil?
  @cart.each do | product |
    @order.quantities.build :product => product, :quantity => 1
  end
end

ただし、製品と注文に属する数量モデルのフィールドである数量をユーザーが更新できるようにしたいと考えています。

フォーム ビューでこの新しく作成された「@order.quantities」にアクセスするにはどうすればよいですか?

    <%= simple_form_for(@order) do |f| %>
    <%= f.error_notification %>
    <%= f.simple_fields_for :quantities do |q| %>
       <%= q.input :quantity %>
    <% end %>
    <div class="form-actions">
        <%= f.button :submit, :class => "main_button right" %>
            </div>
        </div>
    <% end %>

モデル:

class Order < ActiveRecord::Base
    has_many :quantities
    has_many :products, through: :quantities
end

class Quantity < ActiveRecord::Base
    belongs_to :order, dependent: :destroy
    belongs_to :product
end
4

1 に答える 1

2

これは、フォームの構築に使用されるオブジェクトを返す必要があると思いますf.object(あなたの場合、@order.

ネストされたフォーム ( を使用accept_nested_attributes) を使用する場合は、 が必要simple-fields-forです。accepts_nested_attributes_for :quantitiesに追加することを忘れないでくださいOrder.rb。このようなものが動作するはずです

<%= simple_form_for(@order) do |f| %>
  <%= f.simple_fields_for :quantities do |q| %>
    <%= q.input :quantity %>
    ...

数量の値を印刷したい場合

<%= simple_form_for(@order) do |f| %>
  <%= f.simple_fields_for :quantities do |q| %>
    <%= "You have #{q.object.quantity} quantity" %>
    ...
于 2013-09-15T15:55:13.877 に答える