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 :quantitiesOrder.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 回答