【问题标题】:Accessing engine routes from Rails.application.routes.url_helpers从 Rails.application.routes.url_helpers 访问引擎路由
【发布时间】:2015-05-07 23:02:19
【问题描述】:

我想知道如何使用Rails.application.routes.url_helpers 访问引擎路由。

我有一个工厂对象,它创建一个包含动态生成的 url 的字符串。目前,我可以使用Rails.application.routes.url_helpers.(INSERT PATH NAME)生成url。

但是,它只能访问主应用程序中的路由。我无法访问安装在主应用程序上的引擎的路线。

我尝试过的事情

  1. 我尝试使用Rails.application.routes.engine_name,其中engine_name 是在主应用程序上安装引擎的名称。

  2. 我尝试使用MyEngine::Engine.routes.url_helpers 访问引擎中的路由。它可以工作,但我想使用Rails.application.routes.url_helpers,因为有很多像这样的工厂对象,它们都继承自将url_helper 传递给Rails.application.routes 的超类。

有什么建议吗?让我知道是否需要任何澄清。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    假设你的引擎命名空间是EngineName,它应该是:

    EngineName::Engine.routes.url_helpers.some_engine_path
    

    【讨论】:

      【解决方案2】:

      您必须使用引擎路由代理方法。 在您的示例中,使用以下语法调用 url 助手:

      my_engine_engine.articles_path
      

      要重命名代理方法助手,只需在您的 rails 应用程序中编辑路由配置文件:

      mount MyEngine::Engine => '/app', :as => 'my_engine'
      

      所以你现在可以调用前面的例子:

      my_engine.articles_path
      

      【讨论】:

      • 这与我的问题无关,我指定我已经尝试过这种方式。
      猜你喜欢
      • 2016-12-12
      • 1970-01-01
      • 2016-03-02
      • 2013-04-25
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      相关资源
      最近更新 更多