小编Cam*_*ron的帖子

Rails 4嵌套属性和has_many:通过表单中的associaton

我在管理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)

forms activerecord ruby-on-rails ruby-on-rails-4

20
推荐指数
1
解决办法
3万
查看次数