如何在rails 3.2.8 app的控制器中传递嵌套属性值?

时间:2012-11-12 17:40:40

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

quoterfq获取测试项目,该项目在创建报价时已知(在@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 %>

在控制器中传递嵌套属性值的正确方法是什么?谢谢您的帮助。

0 个答案:

没有答案