3

我正在Rails 3.2服務器上重寫我的路由,所以語言是URL的一部分。我的routes.rb文件是這樣的:Rails 3本地化路由和顯示資源

http://mydomain/es/somecontroller/someaction 

問題自帶的表演動作,鏈接不會:

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

幾乎所有的網址,通過追加中的語言字符串,即很好地工作工作。這條線:

<%= 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 

所有的一切都完美的作品!根本不需要重寫鏈接。

+0

矯正:所有與鏈接:id不工作,像編輯和刪除的。只有新的和索引的工作。 –

回答

1

對於顯示,編輯,摧毀你應該傳遞:路徑中的對象的ID否則它會顯示錯誤。對於例如

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

通過這個鏈接它會幫助你很多的情況下,路由http://guides.rubyonrails.org/routing.html

+0

現在的錯誤是不同的:沒有路由匹配{:action =>「show」,:controller =>「users」,:lang => 6}(6是用戶ID)。無論如何感謝 –

+0

然後在user_path嘗試傳遞您想要使用的語言。 – abhas

+0

這個工作,再次感謝,但涉及改變大約100多個鏈接遍佈整個網站,真的沒有任何其他方式?更自動?,也許link_to重新定義? –