假设我有这些类(class)
class Company
has_many :workers
end
class Worker
belongs_to :company
end
我想要一个可以修改公司和每个 worker 的页面。我的尝试是这样的:
= form_for @company do |f|
= f.text_input :name
-# etc..
- @company.workers.each do |worker|
= f.fields_for worker do |fw|
= f.text_input :name
= f.text_input :title
但是,工作人员的字段名称如 company[worker][title]
不包含工作人员的标识符,因此所有 title
字段每个 worker 都有相同的名字。
为属于单个对象的多个对象创建表单的正确方法是什么?
最佳答案
正如@max 所指出的,您想使用fields_for
。具体来说,您想使用 one-to-many implementation .
这意味着您的模型将需要接受嵌套属性
class Company
has_many :workers
accepts_nested_attributes_for :workers
end
并且您的表单将嵌套有一个 fields_for
block ,您拥有该 block 但是您使用了错误的 block 参数。而不是 f
你想使用 fw
= form_for @company do |f|
= f.text_input :name
-# etc..
- @company.workers.each do |worker|
= f.fields_for :workers, worker do |fw|
= fw.text_input :name
= fw.text_input :title
关于ruby-on-rails - 如何在 Rails 中为对象的多个子对象编写表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33046360/