如果我在其他控制器中有一個方法與我正在寫入的方法不同,並且我想調用該方法,是否有可能,或者我應該考慮將該方法移動到幫手?從另一個控制器調用方法
回答
你可以在技術上創建另一個控制器的實例並調用其中的方法,但它很單調乏味,容易出錯並且極不推薦。
如果該功能對兩個控制器都是通用的,那麼您應該在ApplicationController
或其他創建的超類控制器中使用它。
class ApplicationController < ActionController::Base
def common_to_all_controllers
# some code
end
end
class SuperController < ApplicationController
def common_to_some_controllers
# some other code
end
end
class MyController < SuperController
# has access to common_to_all_controllers and common_to_some_controllers
end
class MyOtherController < ApplicationController
# has access to common_to_all_controllers only
end
另一種方式做到這一點爲jimworm建議,是使用一個模塊的通用功能。
# lib/common_stuff.rb
module CommonStuff
def common_thing
# code
end
end
# app/controllers/my_controller.rb
require 'common_stuff'
class MyController < ApplicationController
include CommonStuff
# has access to common_thing
end
或包含在「模塊」中。 – jimworm
'包含GoodSuggestion'謝謝@jimworm – edgerunner
創建其他控制器的實例? Arrrrrrrgggh(確實)。另一個選擇,因爲問題太模糊:將代碼移動到模型。 – nathanvda
嘗試,並逐步打動你的方法來你的模型,如果他們不適用於一個模型,然後一個幫手,如果仍然需要訪問其他地方放在ApplicationController中
我不知道你的問題的任何細節,但也許路徑可能是你的情況的解決方案(特別是如果它的RESTful行動)。
如果你需要有一些DB操作做,那麼你可以寫一個模型中常見的功能(類的方法)。在模型中定義的功能可以通過所有控制器訪問。但是這個解決方案適用於所有情況。
- 1. Angularjs:從另一個控制器中的控制器調用方法
- 2. 從JavaFX控制器調用另一個類的方法?
- 3. 如何從另一個視圖控制器調用方法
- 4. 如何從另一個控制器調用方法?
- 5. 從另一個控制器目標調用實例方法C
- 6. 在另一個控制器中調用一個控制器的方法?
- 7. 從另一個調用控制器
- 8. 從另一個控制器方法重新使用控制器方法(導軌)
- 9. 在Codeigniter中可以從另一個控制器調用另一個控制器的方法嗎?
- 10. 從另一個控制器調用另一個控制器的功能
- 11. 無法在codeigniter中調用另一個控制器方法
- 12. Angularjs,如何從另一個控制器調用控制器
- 13. ASP.Net Core從另一個控制器調用控制器
- 14. 從另一個控制器調用控制器
- 15. 從另一個線程(一個javax.jms.MessageListener)調用的Spring MVC控制器方法
- 16. 在Typo3中調用當前控制器中的另一個控制器方法
- 17. Angular.js從另一個控制器回調
- 18. 從另一個基於url的控制器方法調用彈簧mvc控制器方法
- 19. 從另一種方法調用圖像選擇器控制器委託方法
- 20. IOS:在另一個控制器中調用方法
- 21. 調用另一個控制器的方法
- 22. didSelectRowAtIndexPath方法不在另一個視圖控制器中調用
- 23. 調用另一個控制器發佈方法
- 24. 如何在zend中調用另一個控制器的方法?
- 25. Form_for方法到另一個控制器
- 26. Asp.net MVC控制器指數方法無法從另一個控制器
- 27. 如何調用一個控制器的功能,從另一個控制器AngularJs
- 28. CAKEPHP從另一個控制器調用一個控制器動作
- 29. 從另一個控制器
- 30. 從另一個控制器
您可以通過調用另一個控制器的方法將事實添加到要解決的問題嗎?目前它非常模糊,解決方案將取決於問題。 – mliebelt
確實,請詳細說明您正在嘗試解決的問題。共享方法在做什麼? – nathanvda