【问题标题】:How to call a normal controller method in ActiveAdmin?如何在 ActiveAdmin 中调用普通控制器方法?
【发布时间】:2011-11-17 20:09:59
【问题描述】:

我正在为 Products 模型使用 ActiveAdmin。

在我的ProductsController 中,我在update 方法中做了一些特殊的魔法,我希望在从ActiveAdmin 更新产品时也会发生这种情况。为了干燥,我想从 ActiveAdmin 调用ProductsController.update 方法。我试过了:

controller do
  def update
    ProductsController.update
  end
end

但我得到了NoMethodError in Admin::PoisController#update。所以显然 ActiveAdmin 的命名空间仍然适用。如何引用该命名空间之外的控制器?

【问题讨论】:

    标签: ruby-on-rails namespaces ruby-on-rails-3.1 activeadmin


    【解决方案1】:

    你肯定还在命名空间中。调用它::ProductsController 来获取全球的。但是你还没有完成。

    Rails 中的控制器动作不是类方法,而是实例方法。您必须实例化控制器才能调用操作。你可以试试,但我认为它不会奏效。

    我会从原始 ProductsController 中提取逻辑,以便可以从两个控制器轻松调用它。

    【讨论】:

    • 好的,把代码放到一个公共类中是个好主意。我试图把它放在ProductsHelper 中,我可以通过首先包含ProductsHelper 从我的ProductsController 中成功调用它。但是,我发现无法将它包含在 ActiveAdmin 中。他们的 DSL 似乎不支持include
    猜你喜欢
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多