0

私のモデルの1つと、関連するテーブル名、コントローラ、ビューフォルダ、およびアプリケーション内のすべてのファイル全体の古い名前の参照が変更されました。 paramsに関連するエラーのために、アクション(新しい名前)を作成または更新できないことを除いて、アプリケーションは正常に動作します。ここでモデルの名前を変更した後、作成機能と更新機能が失敗するのはなぜですか?

undefined method `permit' for "create":String Did you mean? print 

このエラーを示すのparamsされています:ここに新しいアクションを作成するときに受信エラーがある

Parameters: 

{"utf8"=>"✓", "authenticity_token"=>"[removed]", "commit"=>"Create This Campaign"} 

は私が手動で[削除]ここでトークンを置き換えます。

アクションを更新しようとしたとき、私は同じエラーが表示されます。

undefined method `permit' for "update":String Did you mean? print 

そして、ここでは、この更新エラーを示すパラメータは次のとおりです。

Parameters: 

{"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"[removed]", "commit"=>"Submit", "id"=>"50"} 

私はすべてを名前を変更する前に、これらのエラーはありませんでした現れる。なぜこれが起きているのか?私のアプリはparams.require(:action).permitに文字列(ハッシュの代わりに)を渡しているようですが、なぜそれがそれをするのか分かりません。

答えて

1

actionをRailsのリソース名として使用しないでください。 actionのパラメータがparamsに設定されている場合は、というアクションの名前が常にに設定されます。つまり、params[:action]を使用してサーバーにデータを戻すことはできません。コントローラのupdateアクションで

params[:action]は常にしたがって、文字列"update"、あなたはおよそpermitが文字列"update"上で定義されていない取得しているエラーになります。

関連する問題