0

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

知道他们为什么改变这个吗?

4

1 回答 1

1

rails 中的路由器为 Rails 3.0 完全重写。它在Rails 指南中对此主题进行了很好的概述。我只会将其视为主要版本之间过渡的众多 BC 重大更改之一。

修复非常简单——只需对您的操作稍作改动即可。

tags = params[:tags].split(/\//).reject(&:empty?)
于 2013-08-31T00:15:43.773 回答