2011-11-17 44 views
0

我使用ActiveAdmin作爲Products模型。如何在ActiveAdmin中調用正常的控制器方法?

在我的ProductsController中,我在update方法中做了一些特殊的魔術,我想在從ActiveAdmin更新產品時也會發生這種情況。爲了幹,我想從ActiveAdmin中調用ProductsController.update方法。我試過了:

controller do 
    def update 
    ProductsController.update 
    end 
end 

但是我得到一個NoMethodError in Admin::PoisController#update。顯然ActiveAdmin的命名空間仍然適用。我該如何引用該命名空間之外的控制器?

回答

2

你絕對還在命名空間。稱它爲::ProductsController以獲得全球一個。但你還沒有完成。

Rails中的控制器操作不是類方法,而是實例方法。你必須實例化控制器來調用一個動作。你可以試試,但我認爲它不會奏效。

我會從原始的ProductsController中提取邏輯,以便可以從兩個控制器輕鬆調用它。

+0

好吧,把代碼放到一個普通的類中是個好主意。我試着把它放在'ProductsHelper'中,我可以通過首先包含'ProductsHelper'來從我的'ProductsController'成功地調用它。但是,我發現無法將其包含在ActiveAdmin中。他們的DSL似乎不支持'include'。 –

相關問題