加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读