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
我正在使用 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