我有一个安装在dummy/config/routes.rb
使用中的Rails引擎
mount Handicap::Engine => "/handicap"
在引擎中,我有许多控制器,当我在虚拟目录中启动Rails服务器时,这些路由处于活动状态,例如/ handicap / tees / index响应。但是,当我转到/rails/routes
它时仅显示:
handicap_path /handicap Handicap::Engine rails_routes_path GET /rails/routes(.:format) sextant/routes#index sextant_engine_path /sextant Sextant::Engine
我可以使用列出它们rake routes
,但是我的正常工作流程是在浏览器中列出它们。如何在浏览器中列出引擎路线?
如果只想以开发模式在浏览器中显示路线,则可以调用以下Rails页面:
http:// localhost:3000 / rails / info / routes(从Rails 4开始可用)
如果您要从Rails 3升级,则可以从宝石中移除六分仪的宝石,因为这已成为Rails核心的一部分。
如果要向用户显示生产中的路线,则可以按以下方式实现它:(在bin/rake routes
(在此处实现),您可以从代码中调用相同的东西:)
控制器代码:
# app/controllers/example_controller.rb routes = Rails.application.routes.routes @inspector = ActionDispatch::Routing::RoutesInspector.new(routes)
查看代码:
# app/views/example/show.html.erb # Yeah! There's also a HTML Table Formatter already to print routes in html inspector.format(ActionDispatch::Routing::HtmlTableFormatter.new(self))尝试2:
在助手中执行此操作:
# app/helpers/route_printing_helper.rb module RoutePrintingHelper def print_routes(view) routes = Rails.application.routes.routes inspector = ActionDispatch::Routing::RoutesInspector.new(routes) inspector.format(ActionDispatch::Routing::HtmlTableFormatter.new(view)) end end
然后调用它:
# app/views/example/show.html.erb print_routes(self)尝试3:
这是这样做的“最便宜”的方式:
# app/controllers/example_controller.rb @routes_output = `#{Rails.root}/bin/rake routes`
您的看法:
# app/views/example/show.html.erb<%= @routes_output %>