如何在 Ruby 文件中调用应用程序控制器方法?我不能使用传统的 MVC 架构。
谢谢!
解决您的问题的最佳方法是提取有问题的方法并将其放入模块中,例如lib/my_utils.rb
. 然后,您可以在任何需要的地方使用此文件:
# lib/my_utils.rb
module MyUtils
def the_method_you_were_talking_about(args)
.. code ..
end
end
然后:
# application_controller.rb
require 'lib/my_utils.rb'
MyUtils.the_method_you_were_talking_about("and any data you need to pass to it")
然后你会从你的另一个 ruby 文件中做同样的事情。
如果要从应用程序控制器和其他 ruby 文件中调用该方法,则需要将该方法移动到另一个文件,可能是普通旧 Ruby 对象 (PORO)。然后,从您的控制器和需要使用它的任何其他文件中请求该文件。
在控制器中只包含与控制器相关的逻辑是个好主意。由于您是从控制器之外的其他对象调用此方法,因此它不能是严格与控制器相关的逻辑,因此这是移动它的绝佳机会。
如果你有一个方法ApplicationController
并且你需要调用它,你可以使用一个技巧:
ApplicationController.new.#method_here
但是您最好将该方法移动到插件中并在ApplicationController
最佳实践中调用它。
更多信息在这里: