私はレールに比較的慣れていないので、最終的に正しい使用方法を見つけましたaccepts_nested_attributes_for
。
ただし、ウェブ上には、使用accepts_nested_attributes_for
は一般的に悪い習慣であると言う深刻なリソースがいくつかあります (このような)。
回避するために必要な変更accepts_nested_attributes_for
と、追加のクラスファイルを配置するフォルダー (追加のクラスが必要だと思います)。
美徳はそれにふさわしいと読みました。そうですか?
これはまだ使用している非常に基本的な例です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 %>
[編集]
サービス オブジェクトを使用するのは良い考えでしょうか?