ActiveAdmin 使用 POST 而不是 PATCH/DELETE

ActiveAdmin using POST instead of PATCH/DELETE

我在 Rails 4.2 和 rails-api 上使用 ActiveAdmin(主)。我已经完成了所有正确的配置,以便 AA 正常工作。我可以使用索引页面、显示、使用编辑表单等。但是当需要采取破坏性行动时,出于某种原因,AA 使用 POST 而不是正确的 http 动词。结果是 404:

No route matches [POST] "/admin/admin_users/1"

当我通过 chrome 控制台将请求复制为 cURL 时,将 HTTP 方法从 POST 修改为 DELETE,一切正常,用户被删除。那么为什么 ActiveAdmin 使用 POST?

我需要将 Rack::MethodOverride 添加到我的中间件堆栈(您可以通过 运行 rake middleware 确认它丢失了)。

像这样添加:

# config/application.rb
module MyApi
  class Application < Rails::Application
    config.middleware.use Rack::MethodOverride
  end
end

我有同样的问题,使用 activeadmin 1.0.0 和 Rails 5.0.2。表单具有正确的 html,但控制器收到 POST:

<input type="hidden" name="_method" value="patch">

我检查过,Rack::MethodOverride 中间件已经就位。

我的问题已通过更正 permit_params 得到解决:https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters

我不明白这对 POST/PATCH 有何影响,但确实如此。