【问题标题】:Remove URL GET param for locale Rails 5删除区域设置 Rails 5 的 URL GET 参数
【发布时间】: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


    【解决方案1】:

    我找到了解决方案。在我看来:

    <%= link_to 'About', about_path(locale: nil) %>
    

    【讨论】:

      猜你喜欢
      • 2018-04-26
      • 2016-05-17
      • 2017-05-31
      • 1970-01-01
      • 2014-11-06
      • 2016-08-31
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多