2

これはすでに尋ねられていることは知っていますが、それでも機能させることはできません。:locale次のように、を使用して表示するパラメーターを取得しようとしていますdefault_url_options

# SomethingController < ApplicationController
def default_url_options(options={})
  { :locale => I18n.locale }
end

I18n.localea で設定されbefore_filter、正しい値を持っています (pry でデバッグ)。ルート:

# In routes
scope "(:locale)", :defaults => { :locale => I18n.default_locale } do
  get "something" => "something#index", :as => :something_index
end

私の見解では、私は試しました:

url_for :something_index

something_index_url

ただし、どちらも「/en/something」ではなく「/something」を返します。パラメータを自動的に表示するために他に何かしなければならないことはありますか?

私はこれについてここで読んだ:

url_for に依存するすべてのヘルパー メソッド (たとえば、root_path や root_url などの名前付きルート、books_path や books_url などのリソース ルートのヘルパー) は、クエリ文字列にロケールを自動的に含めるようになりました。

4

1 に答える 1

0

get マッチャーを次のように修正できます。

scope :locale, :defaults => { :locale => I18n.default_locale } do
  get "/:locale/something" => "something#index", :as => :something_index
end

より良い方法については、こちらを参照してください。

Rails オプションの /:locale ルート

于 2012-11-15T11:44:49.477 に答える