0

私のアプリケーションは Rails 4 with を使用していinherited_resourcesます。非常に奇妙なことに、updateアクションは機能していないようです。ページでフォームを送信しようとすると、次のeditエラーが発生します。

ArgumentError in Admin::FaqsController#update
wrong number of arguments (6 for 1)

フォームには 6 つのフィールドがあります。私のコントローラーは次のようなものです:

class Admin::FaqsController < Admin::AdminController
  inherit_resources
  respond_to :html
  actions :index, :new, :create, :edit, :update, :destroy

  private

  def resource_params
    params.require(:faq).permit(:title, :slug, :body, :publish_immediately, :published_at, :status)
  end
end

なぜこうなった?updateこれは Rails 4 との非互換性ですか? 自分でアクションを実行する必要がありますか?

4

1 に答える 1

2

私はそれを理解したようです。ドキュメントに戻って、params permit を間違って使用していることに気付きました。resource_paramsコールで呼ばれたかと思ったのrequireですが、以下の通りです。

class Admin::FaqsController < Admin::AdminController
  inherit_resources
  respond_to :html
  actions :index, :new, :create, :edit, :update, :destroy

  private

  def permitted_params
    params.permit(faq: [:title, :slug, :body, :publish_immediately, :published_at, :status])
  end
end

違いは、メソッドの呼び出しとpermitted_params、リソースのフィールドのみの場合ではなく、許可されている特定のフィールドを含む params 配列全体を返すことです。

于 2013-09-05T16:58:40.850 に答える