Вы должны удалить accepts_nested_attributes_for :kinds
в модели заказа, и она должна быть в модели товара (как в вашем коде).Затем измените представление здесь:
...
<% f.fields_for :items do |builder| %>
<table>
<tr>
<% builder.fields_for :kind do |m| %>
...
И я думаю, что вы также допустили ошибку в следующих строках:
<td><%= f.text_field :amount, :id => "amountField", :onchange => "change_total_price()" %></td>
<td><%= f.text_field :text, :id => "textField" %></td>
<td><%= f.text_field :price, :class => "priceField", :onChange => "change_total_price()" %></td>
Если поля amount
, text
и price
связаныс моделью элемента, тогда вы должны использовать builder
вместо f
:
<td><%= builder.text_field :amount, :id => "amountField", :onchange => "change_total_price()" %></td>
<td><%= builder.text_field :text, :id => "textField" %></td>
<td><%= builder.text_field :price, :class => "priceField", :onChange => "change_total_price()" %></td>
РЕДАКТИРОВАТЬ (чтобы ответить на дополнительные вопросы из комментариев):
Вы должны иметь:
<% f.fields_for :items do |builder| %>
<table>
<tr>
<td><%= builder.collection_select :kind_id, Kind.find(:all, :order => "created_at DESC"), :id, :name, {:prompt => "Select a Type" }, {:id => "selector", :onchange => "kind_change(this)"} %></td>
<td><%= builder.text_field :amount, :id => "amountField", :onchange => "change_total_price()" %></td>
<td><%= builder.text_field :text, :id => "textField" %></td>
<td><%= builder.text_field :price, :class => "priceField", :onChange => "change_total_price()" %></td>
и так далее ...