我有一个订单系统,用户可以选择要保存在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
答案 0 :(得分: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" %>
...