【问题标题】:Rails 3 localized routes and show resourcesRails 3 本地化路线和展示资源
【发布时间】:2012-05-16 17:54:03
【问题描述】:

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

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

【问题讨论】:

  • 更正:所有带有 :id 的链接都不起作用,例如编辑和销毁链接。只有新的和索引的工作。

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


【解决方案1】:

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

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

通过此链接,在路由 http://guides.rubyonrails.org/routing.html 的情况下会对您有很大帮助

【讨论】:

  • 现在错误不同了:没有路由匹配 {:action=>"show", :controller=>"users", :lang=>6}(6 是用户 ID)。还是谢谢
  • 然后在 user_path 中尝试传递您想要使用的语言。
  • 这行得通,再次感谢,但涉及更改整个网站的大约 100 多个链接,真的没有其他方法吗?更自动?也许是一个重新定义的link_to?
  • 我不知道任何其他方式抱歉。
  • 这个解决方案在form_for上也有问题,所以它比我想象的要复杂......
猜你喜欢
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多