我一直在使用Rails 4并且在使用强参数更新记录时遇到了一些问题。我一直收到“Stack Level Too Deep”错误。我正在尝试更新has_one meta_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记录。更新给我一个Stack Level Too Deep错误。当我从允许的参数中删除{:meta_data_attributes => [:title, :description, :keywords, :menu_name]}
时,保存工作没有问题
任何帮助都会很棒,提前谢谢你!
答案 0 :(得分:2)
想出问题,需要添加:id
作为meta_data_attributes的允许参数。