我一直在玩 Rails 4,并且在使用强参数更新记录时遇到了一些问题。我不断收到“堆栈级别太深”错误。我正在尝试更新 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
post_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]}
从允许的参数中删除时,保存工作没有问题
任何帮助都会很棒,在此先感谢您!