我正在使用active_admin 0.5.1构建rails应用程序。
在app / admin / plays.rb中我定义了一个这样的管理资源:
ActiveAdmin.register Play do
member_action :upload, :method => :post do
...
end
def index
...
end
end
请注意,我添加了非标准上传操作,如下所述:http://activeadmin.info/docs/8-custom-actions.html
现在每当我调用索引动作时,一切正常。当我发布成员动作时:虽然上传,我得到401响应:
Started POST "/admin/plays/1/upload.js" for 127.0.0.1 at 2013-02-13 18:46:36 +0100
Processing by Admin::PlaysController#upload as JS
Parameters: {...}
WARNING: Can't verify CSRF token authenticity
AdminUser Load (0.4ms) SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = 1 LIMIT 1
(0.1ms) begin transaction
(0.0ms) commit transaction
Completed 401 Unauthorized in 7ms
此外,在收到此错误后,管理员用户将被注销。
我在这里缺少什么?我期望通过member_action定义的动作就像标准动作一样。
答案 0 :(得分:1)
找到原因。
"WARNING: Can't verify CSRF token authenticity"
是一种赠品。
您需要将authenticity_token作为参数添加到ajax上传请求中,以使Devise满意。
我仍然希望Devise会对发生的事情提供更详细的暗示。