私はモデルseries
seasons
とepisodes
を持っています。 series/new
フォームから、シリーズ、シーズン、そしてエピソードをまとめてみたい。私はRails RoutingとNested Formsガイドを読んでいますが、私はガイドが3レベルの深さをカバーしていないので、私が間違っていることはわかりません。ネストされたフォームを使用する場合、RailsはSeries
とSeason
という値を挿入しますが、Episode
の値はではありません。Railsネストされた属性3レベルの深さ
私のアプローチは正しいですか?私は<%= seasons_form.fields_for :episodes ... %>
属性を受け入れている、あなたは季節のフォームので、シーズンモデルにシリーズモデルからaccepts_nested_attributes_for :episodes
を移動する必要がある任意の入力〜
# series.rb
has_many :seasons, dependent: :destroy
has_many :episodes, :through => :seasons
accepts_nested_attributes_for :seasons
accepts_nested_attributes_for :episodes
# season.rb
belongs_to :series
has_many :episodes, dependent: :destroy
# episode.rb
belongs_to :season
# routes.rb
resources :series, except: [:show, :new] do
resources:seasons, except: [:show], path: '' do
resources :episodes, path: ''
end
end
シリーズ/ new.html.erb
<%= form_for @series do |f| %>
<%= f.text_field :title %>
<%= f.fields_for :seasons do |seasons_form| %>
<%= seasons_form.text_field :title %>
<%= seasons_form.fields_for :episodes do |episodes_form| %>
<%= episodes_form.text_field :title %>
<% end %>
<% end %>
<% end %>
params hashにepisodの属性がありますか?はいの場合、あなたはエピソードの属性をホワイトリストに入れましたか? –
返信ありがとうございます、これは私のseries_params: 'def series_params params.require(:person).permit(:title、seasons_attributes:[:id、:title]、episodes_attributes:[:id、:title])です。 end ' – Dotol