如何将数组传递给Rails中的fields_for?

我想在关联中的记录子集上使用fields_for

我有Month模型, has_many :payments

但在我看来,我只想在其中支付部分款项。 例如:

 - 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| %> ... 

这样,如果你有一个非常大的表单或多个表单页面,并且你不想为你想要显示的每个组创建一个额外的关联,你不必这样做。