我的应用程序中有不同的语言,我使用的模式是:/: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吗?
https://stackoverflow.com/questions/47490384
复制相似问题