使用区域设置Rails根路径但没有查询字符串

时间:2017-07-06 10:50:45

标签: ruby-on-rails rails-i18n

我想将i18n应用于我的应用程序的根路径。 Rails i18n guides建议:

  

当然,您需要特别注意应用程序的根URL(通常是“主页”或“仪表板”)。像http://localhost:3001/nl这样的网址不会自动生效,因为您的routes.rb中的根目录:“books#index”声明不考虑区域设置。 (这是正确的:只有一个“根”URL。)

     

您可能需要映射以下网址:

# config/routes.rb
get "/:locale" => "dashboard#index"

但是,使用URL帮助程序时,此配置无法正常运行。以下内容生成带有查询字符串的URL:

root_path(locale: "fr") # => "/?locale=fr"

但我想在路径中使用语言环境生成一个URL:

/fr

1 个答案:

答案 0 :(得分:1)

定义rootlocale_root

# config/routes.rb
root to: "dashboard#index"

scope "/:locale" do
  get "/", to: "dashboard#index", as: :locale_root
end

然后,您可以使用locale_root_pathlocale_root_url助手:

locale_root_path(locale: "fr") # => "/fr"