0

我們的rails 3.1.0應用程序中有rfq,quote和test_item。詢價有許多報價和測試項目。報價屬於rfq,並有許多測試項目。測試項目有許多rfq和報價。如何僅在rails中顯示關聯記錄的名稱3.1.0

創建報價時,rfq中的測試項目直接傳遞到報價新表單中。下面是在新的代碼在引號控制器:

@quote = @rfq.quotes.new() 
    @quote.test_items << @rfq.test_items 

這裏以引用新形式的視圖代碼,用於顯示從RFQ通過測試項目:

<%= simple_form_for([@rfq, @quote]) do |f| %>  
....   
    <% @quote.test_items.each do |t| %> 
    <p><%= f.association :test_items, :label => false %><%= link_to_remove_fields "remove", f %></p> 
    <% end %> 
.... 
<% end %> 

視圖代碼上面可以顯示測試項目從rfq傳遞並維護關聯(報價有很多測試項目),這是應用程序需要的。然而,它也顯示了一個測試項目的選擇框,這裏不需要(除了刪除之外,不能更改測試項目的引用),循環中的t也沒有用。我們需要的只是顯示測試項目的名稱,維護關聯(報價有很多測試項目),並允許刪除測試項目(由link_to_remove_fields完成)。

有沒有一種乾淨的方法來實現這一目標?非常感謝。

回答

1

看看Rails中的嵌套屬性機制。它既需要模型聲明accepts_nested_attributes_for,也需要fields_for表單助手,這些助手也與simple_form的simple_fields_for兼容。

我認爲你的錯誤是你明確地循環了test_items並且呼叫f.assocation它告訴表單你想要選擇不同的test_item。我認爲你想要做的是讓用戶刪除一個複選框test_items。您需要使用fields_for來隱式遍歷test_items的列表,並使用nested_attributes來允許刪除。

+0

試圖在關聯之前使用simple_fields_for,不知何故無法正確使用它。 – user938363 2012-02-02 02:01:33

+0

@ user938363你可以發佈你試過的代碼嗎? – 2012-02-03 06:44:43

相關問題