Rails 4で遊んでいて、強力なパラメーターでレコードを更新する際に問題が発生しました。「スタックレベルが深すぎます」というエラーが発生し続けます。has_onemeta_dataの投稿レコードを更新しようとしています。
post.rb
has_one :meta_data, :as => :meta_dataeable, :dependent => :destroy
accepts_nested_attributes_for :meta_data
after_initialize do
self.build_meta_data unless self.meta_data.present?
end
posts_controller.rb
def create
@post = Post.create(permitted_params)
redirect_to :action => 'index'
end
def update
@post = Post.find(params[:id])
@post.update_attributes(permitted_params)
redirect_to :action => 'index'
end
def permitted_params
params.require(:post).permit(
:title,
:body,
:excerpt,
:permalink,
:content_type,
:author_id,
:media,
:commenting,
:published_at,
:public,
{:meta_data_attributes => [:title, :description, :keywords, :menu_name]}
)
end
新しいレコードの作成は問題なく機能し、関連するmeta_dataレコードを保存します。更新すると、スタックレベルが深すぎるというエラーが発生します。{:meta_data_attributes => [:title, :description, :keywords, :menu_name]}
許可されたパラメータからを削除すると、保存は問題なく機能します
どんな助けでも素晴らしいでしょう、事前にありがとう!