ruby-on-rails – 如何避免在生成的URL中添加默认区域设置?
发布时间:2020-12-16 20:08:20 所属栏目:百科 来源:网络整理
导读:如果您遵循 I18N Rails Guide,所有生成的链接都包含locale参数(localhost / en / about,localhost / fr / about).这是因为我们使用方法default_url_options来总是添加Locale参数: def default_url_options(options={}) { :locale = I18n.locale }end 当loca
如果您遵循
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参数… 我尝试过很多这样的事情 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |