嵌套表单和accepts_nested_attributes_for

时间:2012-08-07 18:41:03

标签: ruby-on-rails ruby

我试图了解如何制作我的模型的嵌套形式,但我对理解如何以及我需要做什么感到困惑。我一直在阅读Rails文档并查看了railscast,但他们只是提到accepts_nested_attributes_for方法等而没有解释。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

根据Rails的API,它说:

嵌套属性允许您通过父级保存关联记录的属性...

示例:它显示了我们如何通过会员管理帖子, fields_for 用于管理表单中的关联字段,并将相关模型的名称传递给它循环遍历所有相关的帖子记录,并为每个帖子创建一个表单构建器。

#controller
def new
  @member = Member.new
end

#model
class Post < ActiveRecord::Base
  belongs_to :member
end

class Member < ActiveRecord::Base
  has_many :posts
  accepts_nested_attributes_for :posts
end

#form
<%= form_for @member do |f| %>
  <%= f.error_messages %>
  <p>
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </p>
  <%= f.fields_for :posts do |builder| %>
  <p>
    <%= builder.label :account %><br />
    <%= builder.text_area :account %>
  </p>
  <% end %>
  <p><%= f.submit "Submit" %></p>
<% end %>

Rails API:http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html