quote
从rfq
获取测试项目,该项目在创建报价时已知(在@rfq.test_items
中)。表quote_test_items存储引用的所有测试项(@quote.quote_test_items
)。
在quote
模型中,有:
accepts_nested_attributes_for :quote_test_items, :reject_if => proc {|item| item['test_item_id'].blank? }, :allow_destroy => true
我们希望rfq
中的所有测试项都传递到控制器quote
中的new
,如果他/她想删除某些测试项,则会将其显示给用户。以下是我们在引用控制器new
中所做的:
@rfq.test_items.each do |it|
@quote.quote_test_items.build
@quote.quote_test_items << it
end
有一个错误:
QuoteTestItem(#56736972) expected, got TestItem(#50178372)
我们在控制器new
中尝试了以下内容:
@quote.test_items << @rfq.test_items
它在控制器中不会产生错误。但是,对于以下代码,存在错误(未定义的方法:test_item_id):
<%= f.fields_for @quote.quote_test_items do |builder| %>
<ul>
<div class="fields">
<li><%= builder.input :test_item_id, :collection => TestItem.active_test_item.all(:order => 'name'), :label_method => :name, :value_method => :id,
:label => false %><%= link_to_remove_items "remove", f %></li>
</div>
</ul>
<% end %>
在控制器中传递嵌套属性值的正确方法是什么?谢谢您的帮助。