階層関係にあるモデルのフォームが表示されない
現在、階層関係にあるモデルのフォームを作成しております。
下記、モデルファイルになります。
post.rb
has_many :items
accepts_nested_attributes_for :items
item.rb
has_one :heading, dependent: :destroy
has_one :content, dependent: :destroy
has_one :link, dependent: :destroy
has_one :movie, dependent: :destroy
has_one :photo, dependent: :destroy
has_one :quate, dependent: :destroy
accepts_nested_attributes_for :heading
accepts_nested_attributes_for :content
accepts_nested_attributes_for :link
accepts_nested_attributes_for :movie
accepts_nested_attributes_for :photo
accepts_nested_attributes_for :quate
heading,content,link,movie,photo,quate.rb
(こちらはheading.rb,conten.rb,link.rbとそれぞれモデルファイルがあるという意味です。そしてすべてに共通して下記設定がされています。)
belongs_to :item
posts_controller.rb
def new
@post = current_user.posts.build
end
def create
@post = current_user.posts.build(post_params)
respond_to do |format|
if @post.save
format.html { redirect_to @post, notice: 'created!!' }
else
format.html { render :new }
end
end
def post_params
params.require(:post).permit(:title, :description, :image,:user_id,
items_attributes:[:id, :order,
heading_attributes:[:id, :head],
photo_attributes:[:id, :image, :title, :q_url],
movie_attributes:[:id, :y_url],
quate_attributes:[:id, :quate, :q_url, :q_title, :q_comment],
content_attributes:[:id, :content],
link_attributes:[:id, :url, :l_text],
twitter_attributes:[:id, :t_url]
])
end
posts/new_and_edit.html.erb
<%= form_for(@post) do |f| %>
<% if @post.errors.any? %>
<ul>
<% @post.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
<% end %>
<%= f.label :title %>
<%= f.text_field :title %>
<%= f.label :description%>
<%= f.text_field :description %>
<%= f.label :image %>
<%= f.file_field :image %>
<%= f.hidden_field :user_id %>
<%= f.submit %>
<%= render 'posts/item_form_fields', name: 'headings' %>
<%= render 'posts/item_form_fields', name: 'contents' %>
<%= render 'posts/item_form_fields', name: 'movies' %>
<%= render 'posts/item_form_fields', name: 'quates' %>
<%= render 'posts/item_form_fields', name: 'links' %>
<%= render 'posts/item_form_fields', name: 'photos' %>
posts/_item_form_fields.html.erb
<%= form_for(@post, remote: false) do |m| %>
<%= render 'items/form_fields', m: m, name: name %>
<%= m.submit "作成" %>
<% end %>
items/_form_fields.html.erb
<%= m.fields_for :items, @item do |b| %>
<%= b.hidden_field :order, value: '0' %>
<%= render "#{name}/form_fields", b: b %>
<% end %>
headings/_form_fields.html.erb
<%= b.fields_for :heading, @item.build_heading do |h| %>
<%= h.text_field :head %>
<% end %>
上記のように _form_fields.html.erb をcontent,link,movie,photo,quateテーブル用にそれぞれもっています。
現在ローカル環境にて実行すると、子関係にあるフォーム(headingやcontent等)が表示されません。また、"作成"をクリックするとpost_controllerのpost_paramsにて下記エラーとなります。
param is missing or the value is empty: post
どなたかお力添えいただけませんでしょうか?