【问题标题】:How the object of controller classes is created in Rails?控制器类的对象是如何在 Rails 中创建的?
【发布时间】:2015-05-04 16:25:08
【问题描述】:

当我们在 Rails 应用程序中浏览页面时,我们会调用控制器类中定义的函数之一。假设我们访问 localhost:3000/articles/new 然后调用 ArticlesController 类的新操作(方法)。这很简单。

但我想不通的是,由于 ArticlesController 类是一个带有一些方法的纯 Ruby 类,我们需要这个类的一个实例来调用其中一个方法。但我们从不明确地这样做。 那么如何使任何控制器类的函数调用成为可能呢?

【问题讨论】:

  • 这有点像 Rails 之类的东西——消除我们手动实例化应用程序所需的一切的需要。在任何情况下,框架都会根据路由实例化动作实例,路由使用约定来确定完整的类名。请求处理管道负责实例化适当的类并调用适当的方法。

标签: ruby-on-rails ruby actioncontroller


【解决方案1】:

控制器由 rails 自动初始化。具体来说,this 调用控制器类上的action 方法,该方法执行实际的initialization

【讨论】:

    【解决方案2】:

    RouteSet 根据 ActionDispatch 路由系统的需要按需生成任何控制器的实例。请参阅 here 了解如何完成此操作。

    因此,除非您直接测试控制器,否则您可以依靠路由器为您提供控制器实例。如果您直接测试,您应该使用ActiveController::TestCase 为您完成这项工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多