【问题标题】:Rails engine path helper doesn't include mount namespaceRails 引擎路径助手不包括挂载命名空间
【发布时间】:2015-03-04 21:36:31
【问题描述】:

我创建了一个 Rails 引擎,并将其安装在主应用程序的 routes.rb 中:

mount OsuAuth::Engine => '/admin'

我想从我的主应用程序中引用引擎中定义的用户路径帮助器,为此我尝试过:

<%= link_to 'Users', osu_auth.users_path %>

但是,这会生成一个到 /users 的路径,而不是 /admin/users 的工作路径。

运行 rake routes 也会输出没有 /admin 命名空间的路由:

users GET    /users(.:format)                osu_auth/users#index

这对我来说似乎很奇怪。我安装引擎的 /admin 命名空间发生了什么?如何生成正确的路径?

【问题讨论】:

  • 您有没有为此找到解决方案或解决方法?
  • 我最终使用的解决方法是:&lt;%= link_to 'Users', "#{osu_auth_path}#{osu_auth.users_path}" %&gt;。在我看来不是很干净,但似乎有效。

标签: ruby-on-rails ruby-on-rails-4 rails-engines


【解决方案1】:

尝试使用namespace指令:

namespace :admin do
  mount OsuAuth::Engine
end

【讨论】:

  • 感谢您的快速回答。这抱怨缺少挂载点,当添加“/admin”作为挂载点时,它给了我一个 /admin/admin/users 的路径。如果我添加 '/' 的挂载点,它会删除所有命名空间并为我提供路径 /users。
猜你喜欢
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 2015-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多