【发布时间】:2012-12-08 03:26:59
【问题描述】:
我正在为 Rails 应用程序添加国际化,并且或多或少遵循了相关的 Rails Guide 和 Railscast。
我遇到了两个问题:
- 如何添加重定向到当前语言环境的“主页”链接。目前我有 root_path 链接,但由于 routes.rb 中的行旨在获取未作用域的根,这些链接都失败了。这意味着 root_path 始终指向默认语言环境,而不是当前语言环境。
- 我已在本地设置并运行所有内容(除了 上面的问题)但部署到 Heroku 的所有 url 似乎都在下降 通过我的路线文件并被其中一个抓住了。他们在 defulat 下重定向到 '/' 语言环境。
我的设置如下
application_controller.rb
before_filter :set_locale
def default_url_options(options = {})
{locale: I18n.locale}
end
private
def set_locale
I18n.locale = params[:locale] if params[:locale].present?
end
routes.rb
scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do
all_my_routes
# handles /valid-locale
root to: 'home#index', as: "localized_root"
# handles /valid-locale/fake-path
match '*path', to: redirect { |params, request| "/#{params[:locale]}" }
end
# handles /
root to: redirect("/#{I18n.default_locale}")
# handles /bad-locale|anything/valid-path
match '/*locale/*path', to: redirect("/#{I18n.default_locale}/%{path}")
# handles /anything|valid-path-but-no-locale
match '/*path', to: redirect("/#{I18n.default_locale}/%{path}")
我的主页链接:
<%= link_to "Home", root_path %>
【问题讨论】:
标签: ruby-on-rails internationalization