我想为我的路线做一个简单的语言翻译,但我真的不明白为什么我的方法不工作。我想致电www.example.com/it/camere
致电rooms_path(locale: :it)
和www.example.com/en/rooms
致电rooms_path(locale: :en)
。
例如,看看下面的路线:在Rails中翻译路线
get ":locale/rooms" => "home#rooms", constraints: { locale: "en" }, as: "rooms"
get ":locale/camere" => "home#rooms", as: "rooms"
我得到如下结果:
app.rooms_path # => error OK
app.rooms_path(locale: "it") # => 'it/camere' OK
app.rooms_path(locale: "en") # => 'en/camere' Why?!?
并用以下路线(注意第二个约束):
get ":locale/rooms" => "home#rooms", constraints: { locale: "en" }, as: "rooms"
get ":locale/camere" => "home#rooms", constraints: { locale: "it" }, as: "rooms"
我得到以下结果:
app.rooms_path # => error OK
app.rooms_path(locale: "it") # => 'it/camere' OK
app.rooms_path(locale: "en") # => error Lol?!? This is weird!
有人可以向我解释为什么会发生这种情况吗?
我已经阅读了大约3次有关路由的Rails文章,但它没有帮助。
谢谢!
P.S.我宁愿不使用插件为了学习:)
编辑:
这是我的就是我获得通过调用耙路线:
rooms GET /:locale/rooms(.:format) home#rooms {:locale=>"en"}
rooms GET /:locale/camere(.:format) home#rooms {:locale=>"it"}
root /(:locale)(.:format) home#index
天哪,我怀疑这个。我认为我可以用不同的约束条件调用相同的url助手。任何其他方式来实现我的结果没有插件?我可以使用两个不同的帮手,但是我会忽略在我的视图中调用'rooms_path(...)'的好处。我对吗?谢谢。 – StockBreak 2012-07-25 18:55:59