идентификатор не установлен во вложенной форме - PullRequest
2 голосов
/ 04 октября 2011

У меня есть 2 модели Order и OrderItem. На Order # new я вложил новый OrderItem. Когда я создаю заказ, он сохраняется, но не OrderItem. Похоже, что order_id не установлен в OrderItem.

Order has_many :order_items
accepts_nested_attributes_for :order_items, :reject_if => lambda { |a| a[:product_id].blank? } 
attr_accessible :id, :date, :note, :client_id, :order_items_attributes

В OrderItem

belongs_to :order 
attr_accessible :product_id, :order_id, :quantity, :color
validates_presence_of :product_id, :order_id, :quantity

На мой взгляд

<%= nested_form_for @order do |f| %>
  <%= f.fields_for :order_items do |item| %>
    <%= item.label :product_id %> <%= collection_select(:order_item, :product_id, Product.all, :id, :name, :prompt => 'Select Product') %><br/>
    <%= item.label :quantity %> <%= item.number_field :quantity, :value => '1', :min => '1' %><br />
    <%= item.label :color_id %> <%= collection_select(:order_item, :color_id, Color.all, :id, :name, :prompt => 'Select Color') %>
    <%= item.link_to_remove "Remove this item" %>
  <% end %>
 <p><%= f.link_to_add "Add an item", :order_items %></p>
<% end %>

Журнал сервера возвращает "order"=>{"client_id"=>"1", "note"=>"efewfwe", "order_items_attributes"=>{"0"=>{"quantity"=>"1", "_destroy"=>"false"}}}, "commit"=>"Create Order", "order_items"=>{"order_id"=>""}, "order_item"=>{"product_id"=>"12", "color_id"=>"4"}}

Не уверен, что означает первый ноль, но order_id равен nil

1 Ответ

0 голосов
/ 05 октября 2011

Вы связываете OrderItem как has_many :order_items с s.Ваша модель - OrderItem.Чтобы использовать множественную версию в качестве order_items, вам нужно установить :inverse_of => :order_item в вашей ассоциации has_many.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...