嵌套表单和构建关联

时间:2010-12-22 02:21:23

标签: ruby-on-rails forms nested-forms

我正在处理添加到购物车的表单。它看起来像这样

#Models
Order.rb
  has_many :line_items
  accepts_nested_attributes_for :line_items, :allow_destroy => true

LineItem.rb
  has_one :product
  belongs_to :order

Product.rb
  belongs_to :line_item

我想在产品#show中创建一个表单,允许一次将多个相关产品添加到订单/购物车,基本上创建或更新每个产品的订单项。 / p>

在视图中可能是这样的(HAML保持简短)。

-form_for @order do |f|
 - if has_related?
   - for related in @products.related_products
     - f.field_for :line_item do |li_form|
       = li_form.text_field :quantity
       = li_form.hidden_field :product_id
       = related.product_name

实际做这样的工作需要什么?

1 个答案:

答案 0 :(得分:1)

我需要更多信息才能确定,但​​似乎LineItem belongs_to :product和Product不应该belong_to :line_item,除非那里确实存在1-1关系(这对于我,并不遵循这些系统的正常惯例)

注意**在-之前使用form_for并在{strong> rails 3 中弃用了fields_for,而使用{{1}因为表单确实呈现了html

=是has_many关系的语法

其余全部取决于您的用户体验设计。

希望这有帮助!