0
我在我的应用程序中使用了不同的语言,我正在使用此模式:/:locale/some-action
。我的大部分线路都在此范围内:locale
- routes.rb中:删除区域设置Rails的URL GET参数5
scope "(:locale)", locale: /fr|en/ do
root to: 'home#index'
get 'contacts', to: 'contacts#index'
end
get 'about', to: 'about#index'
,但有些则不是。对于:locale
这个范围内的路由,如果我使用它们的名称,如contacts_path
,Rails会根据语言环境生成路由。如果是:fr
,生成的路由将是/fr/contacts
。
对于不在此范围内的路线。例如about
。如果我使用其名称about_path
和区域设置为:fr
,则生成的URL将为/about?locale=fr
,但我不希望这样。
这是application_controller.rb
:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :set_locale
private
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
def default_url_options(options={})
{ :locale => I18n.locale == I18n.default_locale ? nil : I18n.locale }
end
end
什么是消除此GET参数的方式,但仍然使用其在范围:locale
与他们的名字和生成的URL取决于:locale
路线?