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

时间:2016-04-06 10:12:29

标签: ruby-on-rails ruby activeadmin

我正在使用主动管理员构建我的RoR应用管理界面,遇到了一个例外,我一直试图设置自定义操作:

SocialConnection

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

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' 的第46行是admin/deal.rb被调用的行,似乎member_action方法在某处被覆盖,或者还有其他显而易见的东西我看不到。 ..

有什么想法可以来自哪里? amon其他宝石我使用的是cancancan,devise和responders。

提前致谢

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

1 个答案:

答案 0 :(得分:1)

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

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