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

pdu*_*ler 9 ruby-on-rails has-many-through formtastic

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

class Moving < ActiveRecord::Base
  has_many :movingresources, :dependent => :destroy
  has_many :resources, :through => :movingresources
end

class Movingresource < ActiveRecord::Base
  belongs_to :moving
  belongs_to :resource
end

class Resource < ActiveRecord::Base
  has_many :movingresources
  has_many :movings, :through => :movingresources
end
Run Code Online (Sandbox Code Playgroud)

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

<%= form.input :workers, :as => :check_boxes %>
Run Code Online (Sandbox Code Playgroud)

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

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

我想知道你的解决方案!

pdu*_*ler 8

好吧,我错过了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 %>
Run Code Online (Sandbox Code Playgroud)