我在管理has_many时遇到问题:通过使用表单进行关联.我不想做的是编辑相关模型的属性,其中有大量信息,而我只想管理关联.我理解我可以通过操作传递给我的操作的表单参数并手动构建关系来做到这一点,但我更愿意采用Rails方式,如果可能的话.
关于我的一个有趣的事情就是这个has_many:通过关联实际上是一个我已经使用accepts_nested_attributes_for保存的模型
以下是我的模型:目标,里程碑和程序.
class Goal < ActiveRecord::Base
has_many :milestones, inverse_of: :goal, dependent: :destroy
accepts_nested_attributes_for :milestones, :allow_destroy => true
end
class Milestone < ActiveRecord::Base
belongs_to :goal, inverse_of: :milestones
has_many :milestone_programs
has_many :programs, :through => :milestone_programs
end
class Program < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)
现在,在我的目标编辑视图中,我需要能够添加和删除里程碑,对于那些里程碑,我需要能够添加和删除程序关联.这是我表单的代码.
<%= form_for @goal do |f| %>
<%= f.fields_for :milestones do |f_milestone| %>
<%= f.hidden_field :id, :value => f.object.id %>
<%= f.hidden_field :name, :value => f.object.name %>
<a href="javascript:void(0)" class="milestone-remove">- remove</a>
<ul>
<%= f.fields_for :programs do |f_prog| %>
<li>
<%= …Run Code Online (Sandbox Code Playgroud)