我想在關聯中的記錄子集上使用fields_for
。如何在Rails中將數組傳遞給fields_for?
我有一個Month
模型,其中has_many :payments
。
但在我看來,我只想讓fields_for
支付一些款項。例如:
- fields_for @month.payments.large
這不起作用。
我可以通過一組記錄到fields_for
,而不是通常的符號(fields_for :payments
)的方法嗎?
我想在關聯中的記錄子集上使用fields_for
。如何在Rails中將數組傳遞給fields_for?
我有一個Month
模型,其中has_many :payments
。
但在我看來,我只想讓fields_for
支付一些款項。例如:
- fields_for @month.payments.large
這不起作用。
我可以通過一組記錄到fields_for
,而不是通常的符號(fields_for :payments
)的方法嗎?
您可以添加其他協會的大筆款項,例如:
class Month < ActiveRecord::Base
has_many :payments
has_many :large_payments, :class_name => "Payment", :conditions => "value > 1000000"
end
之後,你可以在常用的方式使用fields_for
:
- fields_for :large_payments
我認爲封裝在一個示範方這一邏輯這是一種更好的方法。
但是,您可以使用一組對象而不必創建任何其他關聯。例如,讓我們說,在你的控制器,你準備@large_payments的一些陣列,然後在視圖中可以執行以下操作:
<%= f.fields_for :payments, @large_payments do |payment| %> ...
這樣,如果你已經有了一個相當大的形態或形式多頁,而且您不希望爲每個要顯示的組創建附加關聯,您不必這樣做。
我可能做錯了什麼,但我無法讓這個解決方案工作。 – TheNastyOne 2017-02-07 16:27:39
好想法 - 那就是訣竅。我還必須添加'accep_nested_attributes_for:large_payments'。謝謝:) – nfm 2010-09-03 00:59:51
你說得對。如果您保護您的付款模式免受大量分配(保護好做法),您應該添加'attr_accessible:large_payments_attributes'。 – Voldy 2010-09-03 09:11:17