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

时间:2010-09-02 05:08:22

标签: ruby-on-rails forms field nested-forms formbuilder

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

我有一个Month模型,has_many :payments

但在我看来,我只希望fields_for部分付款。例如:

- fields_for @month.payments.large

这不起作用。

我可以将一组记录传递给fields_for,而不是通常的符号(fields_for :payments)方法吗?

2 个答案:

答案 0 :(得分: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

我认为在模型方面封装这个逻辑是一种更好的方法,然后在视图中。

答案 1 :(得分:5)

但是,您可以使用对象数组而无需创建任何其他关联。例如,假设您在控制器中准备了一些@large_payments数组,然后在视图中可以执行以下操作:

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

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