3

我在 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

问题来自显示操作,链接不起作用。这一行:

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

导致这样的“路由错误”:

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

我究竟做错了什么?

编辑:好的,找到解决方案。多亏了 Cage 和一些研究,才有了解决方案。

只需要这样的 ApplicationController 方法:

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

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

4

1 回答 1

1

对于显示、编辑、销毁,您应该在路径中传递对象的 :id ,否则它将显示错误。例如

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

浏览此链接,它会在路由http://guides.rubyonrails.org/routing.html的情况下为您提供很多帮助

于 2012-05-16T18:10:06.213 回答