使用关联(has_many)模型中的字段和rails中的formtastic

我搜索并尝试了很多,但我无法按照我的意愿完成它。所以这是我的问题。

class Moving  :destroy has_many :resources, :through => :movingresources end class Movingresource < ActiveRecord::Base belongs_to :moving belongs_to :resource end class Resource  :movingresources end 

Movingresources包含其他字段,如quantity 。 我们正在研究“账单”的观点。 感谢formtastic通过写作简化整个关系的事情

  :check_boxes %> 

我得到一个真正漂亮的复选框列表。 但到目前为止我还没有发现的是:我如何使用’movingresource’中的附加字段,在每个复选框的下方或下方,从该模型中获取所需的字段?

我看到了不同的方法,主要是手动循环遍历一组对象并创建适当的表单,使用:for in form.inputs part,or。 但是这些解决方案都不是干净的(例如,为编辑视图工作但不适用于新的,因为没有构建或生成所需的对象并且生成它们导致混乱)。

我想知道你的解决方案!

好吧,我错过了accepts_nested_attributes_for的革命,这解释了为什么它没有真正起作用。

这让我向前迈了一大步,但我觉得在某些地方,我的复杂关系仍会有一些并发症^ _ ^

 class Moving < ActiveRecord::Base has_many :movingworkers, :dependent => :destroy has_many :workers, :through => :movingworkers accepts_nested_attributes_for :movingworkers end <% form.inputs :for => :movingworkers do |movingworker| %> <%= movingworker.inputs :worker, :quantity %> <% end %> 

Formtastic’s:label_method选项可能有所帮助。 例如

 <%= form.input :movingworkers, :label_method => :worker %> 

要么

 <%= form.input :movingworkers, :label_method => Proc.new { |x| "#{x.worker} #{x.quantity}" } %> 

如果新视图中不存在这些字段,您可以测试它是否是新的( new_record? )并呈现一组不同的字段(如果您将其包含在部分中则可能是一个非常干净的方法)。