我想根据以下网站制作我的Rails3.2应用程序i18n,并在URL路径中包含locale参数。 (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是nil 要使nil:locale enable并在以下情况下默认为“en”:locale为nil,我该怎么办?
答案 0 :(得分: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