2010-09-02 52 views
4

我想在關聯中的記錄子集上使用fields_for如何在Rails中將數組傳遞給fields_for?

我有一個Month模型,其中has_many :payments

但在我看來,我只想讓fields_for支付一些款項。例如:

- fields_for @month.payments.large 

這不起作用。

我可以通過一組記錄到fields_for,而不是通常的符號(fields_for :payments)的方法嗎?

回答

5

您可以添加其他協會的大筆款項,例如:

class Month < ActiveRecord::Base 
    has_many :payments 
    has_many :large_payments, :class_name => "Payment", :conditions => "value > 1000000" 
end 

之後,你可以在常用的方式使用fields_for

- fields_for :large_payments 

我認爲封裝在一個示範方這一邏輯這是一種更好的方法。

+2

好想法 - 那就是訣竅。我還必須添加'accep_nested_attributes_for:large_payments'。謝謝:) – nfm 2010-09-03 00:59:51

+2

你說得對。如果您保護您的付款模式免受大量分配(保護好做法),您應該添加'attr_accessible:large_payments_attributes'。 – Voldy 2010-09-03 09:11:17

5

但是,您可以使用一組對象而不必創建任何其他關聯。例如,讓我們說,在你的控制器,你準備@large_payments的一些陣列,然後在視圖中可以執行以下操作:

<%= f.fields_for :payments, @large_payments do |payment| %> ... 

這樣,如果你已經有了一個相當大的形態或形式多頁,而且您不希望爲每個要顯示的組創建附加關聯,您不必這樣做。

+1

我可能做錯了什麼,但我無法讓這個解決方案工作。 – TheNastyOne 2017-02-07 16:27:39