继承的资源Rails 4更新操作

时间:2013-09-04 18:33:48

标签: ruby-on-rails ruby-on-rails-4 inherited-resources

我的应用程序正在使用带有inherited_resources的Rails 4。非常奇怪的是,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操作?

1 个答案:

答案 0 :(得分:2)

似乎我弄明白了。我通过文档回过头来看到我正在使用params许可证。我认为它被调用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数组,其中包含允许的特定字段,而不是仅包含资源的字段。