【发布时间】:2017-11-27 01:02:54
【问题描述】:
我的应用程序中有不同的语言,我正在使用这种模式:/:locale/some-action。我的大部分路线都在这个范围内:locale - routes.rb:
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 ?
【问题讨论】:
标签: ruby-on-rails ruby