1

私のサイトのほとんどは、ロケール (i18n) の下で動作しています。ただし、現在は管理者側で作業しています。そして、これはどのローカルでも機能しません。ローカルの範囲外のすべての URL には、URL の末尾に「?locale=en」が追加されていることに気付きました。

こちらのサイトでご覧いただけます。すべての URL は問題ないようです。ただし、ルートに戻る左上のアイコンに移動すると、そのビットが URL に追加されます。 http://hik-fyp.heroku.com

ルートを特定の言語で表示するためだと思います。ただし、管理セクション (単一言語) になると、どこにでも表示されます。

それは正常ですか?これは、何らかの形でサイトに干渉する可能性がありますか? それを取り除く方法はありますか?しばらくネットで調べましたが、似たようなものは見つかりませんでした。前もって感謝します...

これは ApplicationController からの抜粋です

after_filter :store_location
  before_filter :set_locale




  def set_locale
    logger.debug "* Accept-Language: #{request.env['HTTP_ACCEPT_LANGUAGE']}"
    I18n.locale = params[:locale] || extract_locale_from_accept_language_header || I18n.default_locale
    logger.debug "* Locale set to '#{I18n.locale}'"
    if current_user
      current_user.locale = params[:locale]
      current_user.save
    end
    session[:locale] = I18n.locale
  end


  def default_url_options(options={})
    logger.debug "default_url_options is passed options: #{options.inspect}\n"
    { :locale => I18n.locale }
  end


  def store_location
    # store last url as long as it isn't a /users path
    session[:previous_url] = request.fullpath unless request.fullpath =~ /\/users/
  end

  def after_sign_in_path_for(resource)
    session[:previous_url] || root_path
  end
4

1 に答える 1

0

設定時にそれが起こるように定義しています

def default_url_options(options={})
  { :locale => I18n.locale }
end

これにより、Rails url_for ヘルパー (link_to や他の多くの基になる) に locale パラメーターを自動的に含めるように指示されます。

于 2014-07-09T19:16:30.570 に答える