0

我的应用程序使用 Rails 4 和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

为什么会这样?是否与 Rails 4 不兼容,我只需要自己执行update操作?

4

1 回答 1

2

看来我想通了。我回顾了文档,发现我错误地使用了 params permit。我以为是resource_paramsrequire调用调用的,结果如下:

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 回答