我对 Rails 比较陌生,终于找到了正确的使用方法accepts_nested_attributes_for
。
然而,网络上有一些严肃的资源说使用accepts_nested_attributes_for
通常是一种不好的做法(比如这个)。
需要避免哪些更改accepts_nested_attributes_for
以及将附加类文件放在哪个文件夹中(我想需要一个附加类)。
我读到virtus是适合的。那正确吗?
这是一个仍在使用的非常基本的示例(在此处accepts_nested_attributes_for
找到完整示例):
楷模
class Person < ActiveRecord::Base
has_many :phones
accepts_nested_attributes_for :phones
end
class Phone < ActiveRecord::Base
belongs_to :person
end
控制器
class PeopleController < ApplicationController
def new
@person = Person.new
@person.phones.new
end
def create
@person = Person.new(person_params)
@person.save
redirect_to people_path
end
def index
@people = Person.all
end
private
def person_params
params.require(:person).permit(:name, phones_attributes: [ :id, :number ])
end
end
查看 (people/new.html.erb)
<%= form_for @person, do |f| %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<%= f.fields_for :phones do |builder| %>
<p>
<%= builder.label :number %><br />
<%= builder.text_field :number %>
</p>
<% end %>
<%= f.submit %>
<% end %>
[编辑]
使用服务对象是个好主意吗?