【问题标题】:Calling an ApplicationController method in a ruby file在 ruby​​ 文件中调用 ApplicationController 方法
【发布时间】:2015-01-12 17:55:36
【问题描述】:

如何在 Ruby 文件中调用应用程序控制器方法?我不能使用传统的 MVC 架构。

谢谢!

【问题讨论】:

  • 你的意思是你有一个 Rails 应用程序,它在 ApplicationController 中有一个方法,你想从项目中的 ruby​​ 文件调用该类的方法,但不是请求周期的一部分?请澄清问题。
  • 您能否向我们展示您的 ApplicationController,描述所讨论的方法的作用以及运行其他 ruby​​ 文件的上下文?

标签: ruby-on-rails applicationcontroller


【解决方案1】:

如果要从应用程序控制器和其他 ruby​​ 文件中调用该方法,则需要将该方法移动到另一个文件,可能是普通旧 Ruby 对象 (PORO)。然后,从您的控制器和需要使用它的任何其他文件中获取该文件。

在控制器中只包含与控制器相关的逻辑是个好主意。由于您是从控制器之外的其他对象调用此方法,因此它不能是严格与控制器相关的逻辑,因此这是移动它的绝佳机会。

【讨论】:

    【解决方案2】:

    如果您在ApplicationController 中有一个方法并且您需要调用它,您可以使用以下技巧:

    ApplicationController.new.#method_here
    

    但您最好将该方法移至插件并在 ApplicationController 中调用它以获得最佳实践。

    更多信息在这里:

    How do I call controller/view methods from the console in Rails?

    https://stackoverflow.com/a/9159853/2552259

    【讨论】:

      【解决方案3】:

      解决您的问题的最佳方法是提取有问题的方法并将其放入模块中,例如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​​ 文件中做同样的事情。

      【讨论】:

        猜你喜欢
        • 2012-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-28
        • 1970-01-01
        • 2011-08-11
        • 1970-01-01
        相关资源
        最近更新 更多