【问题标题】:How to get mountable engine path in Rails 5?如何在 Rails 5 中获得可安装的引擎路径?
【发布时间】:2016-07-11 01:55:52
【问题描述】:

我正在可挂载引擎中编写中间件,我需要知道引擎的挂载点。我将如何在 Rails 5 中做到这一点?我试过 MyEng::Engine.routes._generate_prefix({}) 但这在 Rails 5 中不起作用。

【问题讨论】:

  • 找到解决方案了吗?
  • 找到解决方案。见updated answer

标签: ruby-on-rails


【解决方案1】:

E L Rayle评论后更新

如果要获取引擎挂载的路径,可以使用以下方法:

MyEng::Engine.routes.find_script_name({})

请参阅 cmets 了解更多详情。

[上一个错误答案]

我想你正在寻找这个:MyEngine::Engine.root。见this question

【讨论】:

  • 感谢您抽出宝贵时间回复。不幸的是,这个问题的答案不正确。 MyEng::Engine.root 返回 gem 代码的文件路径(例如 ~/.rvm/gems/ruby2.4.3@my_gemset/bundler/gems/my_eng-e870ff07c991)。问题是寻找在 routes.rb 中定义的 URL 路径。 (例如,'my_eng' 中定义的 mount MyEng => '/my_eng')。 _generate_prefix 用来返回这个。
  • 我明白你的意思,所以我一直在寻找_generate_prefix,我发现它已被find_script_name 取代。您可以看到old use herecurrent use here
  • 我没有时间进一步研究它,但如果有人愿意进行更多调查,可能会有所帮助。 find_script_name 方法被定义为 here 并且可以这样使用 MyEng::Engine.routes. find_script_name(options) 其中options 应该像here 描述的那样是一个哈希。
  • 太棒了。感谢您解决这个问题并更新您的答案。它就像一个魅力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
相关资源
最近更新 更多