2

我有几个资源,我想以某种方式在标题中有一个 :lang 参数。所以 /en/posts/ 将使用 params[:lang] == en 指向 posts_controller/index。

这通常是怎么做的?必须在每个链接上添加 ?lang=en 看起来很难看,而且感觉非常不规范。

我想你知道我在说什么,即使我不是很清楚,这里的规范是什么?

4

3 回答 3

1

一种方法是:

map.resources :yourresources, :path_prefix => '/:lang'

您还可以添加语言参数过滤器:

map.resources :yourresources, :path_prefix => '/:lang', :lang => /(en|de|jp)/
于 2009-01-31T15:06:52.433 回答
0

似乎为 Rails 2.3 计划的最新功能就在您的小巷:http ://afreshcup.com/2009/02/01/rails-23-localized-views/

于 2009-02-01T21:42:00.500 回答
0

您不应该完全避开路由,并根据浏览器的 HTTP Accept-Language 标头设置语言吗?见这里

我想您应该为您的用户提供更改语言的选项,然后将该值存储在 cookie 中,然后可以在before_filter.

为什么要这样做?好吧,“HTTP 最佳实践”指出每个资源都应该有一个 URI。一篇文章仍然是同一篇文章,无论是西班牙语还是英语,所以应该有相同的 URI。site.com/en/articlesite.com/es/article明显不是同一个URI,违反了这个原则

于 2009-02-02T00:08:11.983 回答