0

根据在 RubyGems 中发布该版本的人的建议,我正在使用 0.4.0.pre 版本的 Rails 4 路由过滤器。当您在 RubyGems 网站上进行搜索时,您将找不到此版本。当我在 GitHub 上对现有问题发表评论时,我发现了这一点。

https://rubygems.org/gems/routing-filter/versions/0.4.0.pre

我发现此版本与我目前在 Rails 3 应用程序中使用的版本之间存在差异。我相信它是最新的 0.3.1 版本。使用此 gem,当按预期运行 localhost 时,语言环境包含在我的 URL 和底部的调试信息中。但是,当我使用 0.4.0.pre 版本时,区域设置不会显示在 URL 或调试信息中。我在标题部分的顶部有链接,人们可以在其中选择他们的语言环境。单击其中一个链接时,区域设置将显示在 URL 中。当我单击另一个链接(文本或图标)时,区域设置会消失,但区域设置是在 cookie 中设置的(假设不可以,但现在会保留它)。所选语言环境的翻译是正确的,但除非我在链接中做一些特别的事情让人们知道他们点击了哪个,否则没有人会知道语言环境。

这是我在 application_controller.rb 中的两个应用程序中的代码,我在其中设置了语言环境并创建了一个 cookie。

before_filter :set_locale

private
  def set_locale
    I18n.locale = (params[:locale] if params[:locale].present?) || cookies[:locale] || 'en'
    cookies[:locale] = I18n.locale if cookies[:locale] != I18n.locale.to_s
  end

这是我在 config/routes.rb 中的代码。

filter :locale

这是我的 Rails 4 应用程序标题中我的语言环境行的代码。我的 Rails 3.2.13 应用程序中有类似的代码。

<%= link_to_unless_current "English", locale: "en" %> <%= link_to_unless_current "Español", locale: "es" %> <%= link_to_unless_current "Français", locale: "fr" %>

我不确定问题是否出在 0.4.0.pre gem 上,或者我是否需要在我的 Rails 4 应用程序中进行额外的 i18n 更改。通过阅读 i18n 文档,我没有看到我需要做的任何其他事情。没有关于 0.4.0.pre 的特定文档,所以我认为我应该能够使用 Rails 3 版本的路由过滤器做我正在做的事情。

我已在 GitHub 中 gem 的问题部分发布了此内容。我已经在线搜索了有关使用此版本的路由过滤器的信息,但找不到它们。我想它是上个月发布的。

任何帮助,将不胜感激。

4

1 回答 1

0

看起来问题已得到纠正,即 URL 中未出现语言环境的问题。但是我最终还是使用了原生 Rails 代码进行路由,因为我在生产环境中有两个应用程序,我已经在 Rails 4 中重写了这些应用程序。

于 2013-11-08T15:44:17.180 回答