activeadmin:member_action 上的参数数量错误(1 为 0)

activeadmin : wrong number of arguments (0 for 1) on member_action

我正在使用 active admin 构建我的 RoR 应用程序管理界面,遇到异常我一直在尝试设置自定义操作:

ActiveAdmin.register Deal do
 [:cancel, :release].each do |event|
   member_action event , method: :patch do |deal|
    deal.send :"#{event}!"
    redirect_to admin_deal_path(deal), notice: "Your event was #{deal.current_state}"
   end

   action_item event, only: :show do
     link_to event, url_for(action: event), method: :patch
   end
 end
end

事件链接在页面上显示良好,但单击其中一个链接时出现以下异常:

ArgumentError (wrong number of arguments (0 for 1)):
app/admin/deal.rb:45:in `block (3 levels) in <top (required)>'
app/admin/deal.rb:45:in `block (3 levels) in <top (required)>'

actionpack (4.2.6) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.2.6) lib/abstract_controller/base.rb:198:in `process_action'
actionpack (4.2.6) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.2.6) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (4.2.6) lib/active_support/callbacks.rb:117:in `call'
activesupport (4.2.6) lib/active_support/callbacks.rb:117:in `call'
activesupport (4.2.6) lib/active_support/callbacks.rb:555:in `block (2 levels) in compile'
activesupport (4.2.6) lib/active_support/callbacks.rb:505:in `call'
activesupport (4.2.6) lib/active_support/callbacks.rb:505:in `call'
activesupport (4.2.6) lib/active_support/callbacks.rb:92:in `__run_callbacks__'
activesupport (4.2.6) lib/active_support/callbacks.rb:778:in `_run_process_action_callbacks'
activesupport (4.2.6) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (4.2.6) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (4.2.6) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.2.6) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
activesupport (4.2.6) lib/active_support/notifications.rb:164:in `block in instrument'
activesupport (4.2.6)   lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.2.6) lib/active_support/notifications.rb:164:in `instrument'
actionpack (4.2.6) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.2.6) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
activerecord (4.2.6)   lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.2.6) lib/abstract_controller/base.rb:137:in `process'
actionview (4.2.6) lib/action_view/rendering.rb:30:in `process'

admin/deal.rb 的第 46 行是调用 member_action 的行,似乎 activeadmin 方法在某处以某种方式被覆盖,或者有其他明显的我没有看到的东西。 ..

知道它可能来自哪里吗? 我正在使用 cancancan、devise 和 responders。

提前致谢

**更新:完整的堆栈跟踪**

我的错误是将一个变量传递给 member_action 块,该实例似乎可以通过 resource 帮助程序获得

member_action :cancel, method: :patch do
  resource.cancel!
  redirect_to admin_deal_path(resource) 
end