在Rails路由中转换slugs的最佳方法是什么?

时间:2012-01-15 13:38:39

标签: ruby-on-rails-3 internationalization routes translation

我试图在Rails3.1应用程序中实现我的路线的完全国际化。我已经在使用Francesc Pla的rails-translate-routes本地化路线行动和资源。最后一步是能够为我的一些模型转换slu ..

要翻译的路线:

http://myhost.com/products/pharmacy --> http://myhost.com/productos/farmacia

我有一个

形式的嵌套路线
# routes.rb
match 'products/:category_slug' => "products#index"

我有一个带有实例#<Category id: 1, slug: "pharmacy">的模型类别,我在我的ProductsController中有find_by_slug类别。

有关如何翻译路线的:category_slug部分的任何想法?

1 个答案:

答案 0 :(得分:0)

据我所知,只要您使用I18n正确命名,就可以直接从控制器调用翻译助手。

因此,您的ProductsController可能包含以下内容:

class ProductsController < ApplicationController
  def index
    i18n_slug = I18n.t("locale.category.#{params[:category_slug]}")
    @category = Category.find_by_slug(i18n_slug)
  end
end

你应该告诉自己将params直接传递给翻译引擎的潜在安全风险,尽管我不知道。你也可以考虑一下 如果将它用于多个控制器操作,则将其移入前置过滤器或应用程序控制器中。