2

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]}許可されたパラメータからを削除すると、保存は問題なく機能します

どんな助けでも素晴らしいでしょう、事前にありがとう!

4

1 に答える 1

2

:id問題を理解し、meta_data_attributesの許可されたパラメーターとして追加する必要があります。

于 2013-01-28T23:28:57.853 に答える