2013-08-30 1 views
0

В Rails 2, если у меня был следующий маршрут:Rails 2 vs Rails 3: Почему маршрутные шары больше не разделяются?

get 'show/:user_id(/*tags)' => 'show#tags', :as => 'show_tags' 

Я бы ожидать это назад от шоу/123/Foo/бар:

params[ :tags ] # [ 'foo', 'bar' ] 

Теперь, в Rails 3, он возвращает:

params[ :tags ] # 'foo/bar' 

Любая идея, почему они изменили это?

ответ

1

Роутер в рельсах был полностью переписан для Rails 3.0. Это довольно хорошо очерчено в The Rails Guide по теме. Я бы просто подумал, что это одна из многих проблем, связанных с переходом между основными версиями.

Исправление очень простое - просто небольшое изменение вашего действия.

tags = params[:tags].split(/\//).reject(&:empty?) 
+0

спасибо. Позор, что мне технически приходится дважды указывать шары как в маршрутизаторе, так и в действии. Не очень СУХОЙ, но спасибо за понимание! –

+0

Любой простой способ переопределить, как Rails в настоящее время делает это, чтобы заставить его вести себя, как раньше, по умолчанию? –

+0

@JasonTFeatheringham не то, что я знаю; Тем не менее, я не эксперт в области маршрутизатора. – deefour

Смежные вопросы