我可以从范围访问一个参数吗?

时间:2016-01-11 16:08:11

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

我的路由文件中有这个代码,所以我需要在范围内获取参数':locale'

 scope '/:locale', :locale => /it|en|es/ do
     # How I can access value of :locale here ?
  end

1 个答案:

答案 0 :(得分:1)

This博客很好地解释了您要实现的目标。

我们的想法是,您可以使用I18n.available_localesI18n.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