3

私は(3.2.1を使用して)Railsを初めて使用し、Railsガイドのi18nガイドに従っていました。

このセクションで問題が発生しています:

おそらく、URLを次のようにしたいと思うでしょう:www.example.com/en/books(英語のロケールをロードします)とwww.example.com/nl/books(オランダのロケールをロードします)。これは、上記の「default_url_optionsのオーバーライド」戦略で実現できます。この方法でpath_prefixオプションを使用してルートを設定する必要があります。

しかし、ビューで<%= products_path%>を使用すると、/ products?locale = enが返され、 / nl/products を返します。

ブラウザ(fe localhost:3000 / nl / products)にURLを入力すると、ページに正しいロケールが表示されます。

私は何が欠けていますか?

アプリケーションコントローラー:

class ApplicationController < ActionController::Base
  before_filter :set_locale

  def set_locale
    I18n.locale = params[:locale] || I18n.default_locale
  end

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

ルート:

  scope "/:locale" do
    resources :products
  end

  match '/:locale' => 'products#index'

レーキルート:

    products GET    /products(.:format)                  products#index
             POST   /products(.:format)                  products#create
 new_product GET    /products/new(.:format)              products#new
edit_product GET    /products/:id/edit(.:format)         products#edit
     product GET    /products/:id(.:format)              products#show
             PUT    /products/:id(.:format)              products#update
             DELETE /products/:id(.:format)              products#destroy
             GET    /:locale/products(.:format)          products#index
             POST   /:locale/products(.:format)          products#create
             GET    /:locale/products/new(.:format)      products#new
             GET    /:locale/products/:id/edit(.:format) products#edit
             GET    /:locale/products/:id(.:format)      products#show
             PUT    /:locale/products/:id(.:format)      products#update
             DELETE /:locale/products/:id(.:format)      products#destroy
                    /:locale(.:format)                   products#index
        root        /                                    products#index
4

2 に答える 2

1

path_prefix代わりにオプションを使用するのはどうですか

def default_url_options(options = {})
  { :path_prefix => I18n.locale }
end
于 2012-05-20T03:35:31.490 に答える
0

rails-translate-routes gemを使用することになりました。

それは私に期待された結果を与えました+大きな余剰であるルートを翻訳することが可能です.

于 2012-05-22T17:29:05.073 に答える