ruby-on-rails – 在Rails中处理多个根路径和范围
发布时间:2020-12-17 03:30:29 所属栏目:百科 来源:网络整理
导读:我们有以下路线设置: MyApp::Application.routes.draw do scope "/:locale" do ...other routes root :to = 'home#index' end root :to = 'application#detect_language'end 这给了我们这个: root /:locale(.:format) home#indexroot / application#detect
我们有以下路线设置:
MyApp::Application.routes.draw do scope "/:locale" do ...other routes root :to => 'home#index' end root :to => 'application#detect_language' end 这给了我们这个: root /:locale(.:format) home#index root / application#detect_language 这很好. 但是,当我们想要使用语言环境生成路由时,我们遇到了麻烦: root_path生成/哪个是正确的. root_path(:locale =>:en)生成/?locale = en这是不合需要的 – 我们想要/ en 所以,问题是,这是可能的,怎么样? 解决方法
默认情况下,root方法用于定义顶级/路由.
所以,你要两次定义相同的路由,导致第二个定义覆盖第一个! 以下是root方法的定义: def root(options = {}) options = { :to => options } if options.is_a?(String) match '/',{ :as => :root,:via => :get }.merge(options) end 很明显它使用:root作为命名路由. scope "/:locale" do ...other routes root :to => 'home#index',:as => :root_with_locale end root :to => 'application#detect_language' 并称之为: root_with_locale_path(:locale => :en) 所以,这不是一个错误! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |