Rails3更新现有记录,同时创建新记录

时间:2013-09-20 02:11:55

标签: ruby-on-rails ruby-on-rails-3

引用模型有很多变量。报价可以作为LineItem添加到Cart中。 引用has_many:line_items,

LineItem 
  belongs_to :quote
  accepts_nested_attributes_for :quote

这个想法是,如果将报价添加到购物车,其状态会发生变化(:final => true) quote_controller在其show动作实例化

 @line_item = LineItem.new

Quote的节目视图包含一个需要同时做两件事的表格:

  1. 创建line_item。这是由<%= f.hidden_field :quote, :value => @quote.id %>
  2. 生成的
  3. 更新报价。
  4. 第二个要素是问题

    <%= 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。奇怪的是,上下文已经是那种模式了。

1 个答案:

答案 0 :(得分:0)

这个问题是一条花园小径。错误是

A quote can be added to a Cart, as a LineItem.

不需要LineItem。报价可以属于购物车。 cart_id的分配可以解决问题。   然后,show视图包含一个用于编辑同一记录的表单

    <%= form_for(@quote) do |f| %>
      <%= f.hidden_field :cart_id, :value => @cart.id %>

购物车随后包含所有报价及其所需的内容。