ruby-on-rails - 如何在 ActiveAdmin 中调用普通 Controller 方法?

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

我将 ActiveAdmin 用于 Products模型。

在我的 ProductsController我在 update 做一些特殊的魔法从 ActiveAdmin 更新产品时,我也想使用这种方法。为了DRY,我想调用ProductsController.update来自 ActiveAdmin 的方法。我试过:

controller do
  def update
    ProductsController.update
  end
end

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

最佳答案

你肯定还在命名空间中。叫它::ProductsController得到一个全局的。但你还没有完成。

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

我会从原始 ProductsController 中提取逻辑因此可以从两个 Controller 轻松调用它。

关于ruby-on-rails - 如何在 ActiveAdmin 中调用普通 Controller 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8173600/

相关文章:

ruby-on-rails - 如何在 stub 时访问对象的实例变量?

ruby-on-rails - 可以在初始值设定项中访问 Rails 模型中的模块变量吗?

ruby-on-rails - rails 嵌套对象表单和命名空间 Controller

javascript - 避免 HTML 请求并仅进行 js 调用 - ruby​​ on Rails

ruby-on-rails - RoR - 使用同一 block 的两种响应格式?

ruby-on-rails - Capybara -- 如何检查包含换行的内容

包含单词 "Case"的 PHP 命名空间

macos - 我如何使用 bash 和 xmllint 解析 adobe xml swidtag

ruby-on-rails - 更新到 Rails 3.2.2 : How to properly move my plugin from the '/vendor' to '/lib' directory?

android - ruby on rails 中用于 Android 操作系统的 API