我正在使用rails url helpers而不是路径助手(在某些情况下),因为我正在使用使用子域的应用程序,所以我必须将域选项作为参数传递。
然而,这导致链接呈现为:
http://sub.domain.dev/the-page?locale=en
我尝试在应用程序控制器中使用以下变体,但无济于事:
def default_url_options(options={})
{ :locale => :en }
end
如何删除该区域设置参数?
我正在使用RefineryCMS。
答案 0 :(得分:5)
奇怪,但对于我这种情况的任何人:
将RefineryCMS与引擎一起使用时,即使没有使用区域设置,而其他引擎也会生成预期的网址,修复方法是设置:
# config/initializers/refinery/i18n.rb
Refinery::I18n.configure do |config|
config.enabled = false
end
答案 1 :(得分:1)
对于refinerycms-i18n~> 4.0:
# config/initializers/refinery/i18n.rb
Refinery::I18n.configure do |config|
config.url_filter_enabled = false
end
答案 2 :(得分:0)
如果您使用的是区域设置,我建议您使用以下内容:
在您的routes.rb中:
scope "(:locale)", locale: /en|br/ do
resources :the-pages
end
在您的应用程序控制器中:
before_filter :set_locale
def set_locale
I18n.locale = params[:locale]
end
def default_url_options(options={})
{ locale: I18n.locale }
end
通过这种方式,您的网址将变为:
http://sub.domain.dev/en/the-page
http://sub.domain.dev/pt/the-page
编辑 - 如果您不想要任何语言环境,则需要将其从应用程序控制器中删除:
#remove the below
def default_url_options(options={})
{ :locale => :en }
end
另外,请确保您的routes.rb
中没有任何语言环境