我是rails的新手(使用3.2.1),我正在关注rails guides上的i18n-guide。
我在这部分遇到了问题:
您可能希望网址如下所示:www.example.com/en/books (加载英语语言环境)和www.example.com/nl/books(其中 加载荷兰语区域)。这是可以实现的 从上面“覆盖default_url_options”策略:你只需要 以这种方式使用path_prefix选项设置路由
但是当我使用<%= products_path%>在我的观点中,它返回: / products?locale = en 我希望它返回 / nl / products
当我在浏览器中输入网址(f.e.localhost:3000 / nl / products)时,页面会显示正确的区域设置。
我错过了什么?
应用程序控制器:
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'
rake routes:
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
答案 0 :(得分:1)
如何使用path_prefix
选项
def default_url_options(options = {})
{ :path_prefix => I18n.locale }
end
答案 1 :(得分:0)
我最终使用rails-translate-routes gem。
它给了我预期的结果+它可以翻译出很大盈余的路线。