Rails 3本地化路由并显示资源

时间:2012-05-16 17:54:04

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

我正在Rails 3.2服务器上重写我的路由,因此该语言是URL的一部分。我的routes.rb文件是这样的:

scope ":lang", :lang => /es|fr|it|pt|en|de/ do
    resources :users
end

几乎所有的URL都可以通过附加语言字符串来完美地工作,即:

http://mydomain/es/somecontroller/someaction

问题来自show动作,链接不起作用。这一行:

<%= link_to "Show", @my_user %>

导致“路由错误”,如下所示:

No route matches {:action=>"show", :controller=>"users", :lang=>##User serialization##}

我做错了什么?

编辑:好的,找到解决方案。感谢凯奇和一些研究,这就是解决方案。

只需在ApplicationController上使用这样的方法:

def self.default_url_options
  { :lang => FastGettext.locale }
end

一切都完美无瑕!!根本不需要重写链接。

1 个答案:

答案 0 :(得分:1)

对于show,edit,destroy你应该传递:path中对象的id否则会显示错误。例如,

 <%= link_to "Show", user_path(@my_user.id) %>

通过此链接,在路由http://guides.rubyonrails.org/routing.html

的情况下,它会为您提供很多帮助