0

我想根据以下站点制作我的 Rails3.2 应用程序 i18n,并在 URL 路径中包含一个语言环境参数。(http://www.wordchuck.com/en/website/blogs/5

我实施为

scope ':locale' do
  resources :nodes
end

和其他方法

def set_locale
  I18n.locale = params[:locale] if params.include?('locale')
end


def default_url_options(options = {})
  options.merge!({ :locale => I18n.locale })
end

在我的 application_controller.rb 中。

现在我可以确认

http://myhost/ja/nodes/explore or http://myhost/en/nodes/explore

通过,但是

http://myhost/nodes/explore

得到“没有路由匹配 [GET]“/nodes/explore””错误。

我想知道这可能是 :locale 为零。
当 :locale 为 nil 时,要使 nil :locale 启用并默认为“en”,我该怎么办?

4

1 回答 1

0

通过设置路线的方式,nodes资源需要存在区域设置。

为了解决这个问题,您可以简单地在:locale范围之外创建更多路由:

scope ':locale' do
  resource :nodes
end

resource :nodes

原则上,当当前语言环境没有明确设置时,将使用默认语言环境。如果您没有更改应用程序中的任何内容,这将是:en默认设置。

set_locale否则,您可以在您的方法中明确设置:

def set_locale
  I18n.locale = params.include?('locale') ? params[:locale] : :en
end
于 2013-06-05T12:19:59.367 回答