报价模型有许多变量。可以将报价作为 LineItem 添加到购物车中。引用 has_many :line_items,
LineItem
belongs_to :quote
accepts_nested_attributes_for :quote
这个想法是,如果一个 Quote 被添加到购物车,它的状态会改变 (:final => true) quote_controller 在它的 show 动作中实例化
@line_item = LineItem.new
Quote 的显示视图包括一个需要同时做两件事的表单:
- 创建 line_item。这是由
<%= f.hidden_field :quote, :value => @quote.id %>
- 更新报价。
第二个要素是问题
<%= form_for(@line_item) do |f| %>
[...]
<%= fields_for @line_item.quote do |quote_fields| %>
<%= quote_fields.hidden_field :final, :value => true %>
<% end %>
<% end %>
这将返回错误undefined method 'model_name' for NilClass:Class
。奇怪的是,上下文已经是那个模型了。