在 Rails 2 中,如果我有以下路线:
get 'show/:user_id(/*tags)' => 'show#tags', :as => 'show_tags'
我希望这会从 show/123/foo/bar 回来:
params[ :tags ] # [ 'foo', 'bar' ]
现在,在 Rails 3 中,它返回:
params[ :tags ] # 'foo/bar'
知道他们为什么改变这个吗?
在 Rails 2 中,如果我有以下路线:
get 'show/:user_id(/*tags)' => 'show#tags', :as => 'show_tags'
我希望这会从 show/123/foo/bar 回来:
params[ :tags ] # [ 'foo', 'bar' ]
现在,在 Rails 3 中,它返回:
params[ :tags ] # 'foo/bar'
知道他们为什么改变这个吗?
rails 中的路由器为 Rails 3.0 完全重写。它在Rails 指南中对此主题进行了很好的概述。我只会将其视为主要版本之间过渡的众多 BC 重大更改之一。
修复非常简单——只需对您的操作稍作改动即可。
tags = params[:tags].split(/\//).reject(&:empty?)