我的路由文件中有这个代码,所以我需要在范围内获取参数':locale'
scope '/:locale', :locale => /it|en|es/ do
# How I can access value of :locale here ?
end
答案 0 :(得分:1)
This博客很好地解释了您要实现的目标。
我们的想法是,您可以使用I18n.available_locales
和I18n.default_locale
来完成您想要的所有事情。
# resources
scope "/:locale", locale: /#{I18n.available_locales.join("|")}/ do
resources :posts
end
# default url
root to: redirect("/#{I18n.default_locale}", status: 302), as: :redirected_root
# constraint to redirect when no valid locale is specified
get "/*path", to: redirect("/#{I18n.default_locale}/%{path}", status: 302),
constraints: {path: /(?!(#{I18n.available_locales.join("|")})\/).*/}, format: false
要回答您的问题,请在此处了解如何使用当前区域设置
scope "/:locale", locale: /#{I18n.available_locales.join("|")}/ do
root to: redirect("/%{locale}/posts", status: 302)
end