如果您遵循
I18N Rails Guide,所有生成的链接都包含locale参数(localhost / en / about,localhost / fr / about).这是因为我们使用方法default_url_options来总是添加Locale参数:
def default_url_options(options={}) { :locale => I18n.locale } end
当locale是未知的还是缺省的时候,是否可以从生成的url中删除locale参数?
我需要的 :
>地区未知:mysite /约
> Locale en:mysite / about(而不是localhost / en / about)
> Locale fr:mysite / fr / about
我试图只设置区域设置,如果它不是默认的,但结果是生成的链接永远不包含locale参数…
我尝试过很多这样的事情
def default_url_options(options={}) if I18n.locale == :fr { :locale => I18n.locale } else { :locale => nil } end end
全部代码:
ApplicationController.rb:
before_filter :set_locale def set_locale I18n.locale = params[:locale] end def default_url_options(options={}) { :locale => I18n.locale } end
的routes.rb
scope "(:locale)",:locale => /en|fr/ do match 'about' => 'static_pages#about',:via => :get match 'contact' => 'static_pages#contact',:via => :get match '/' => 'search#index',:as => :search end root :to => 'search#index'
解决方法
好的,我明白好多了的确,你几乎做到了
你只需要一个非常有用的Ruby操作符:||
如果存在第一个值,则使用它,否则考虑第二个参数.
def set_locale I18n.locale = params[:locale] || :en end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。