Как обрабатывать непредсказуемые маршруты? - PullRequest
0 голосов
/ 08 сентября 2011

Допустим, что следующие пути являются законными и разрешающими:

http://test.local/wizards/home
http://test.local/wizards/wizardfest2012/dates
http://test.local/dragons/
http://test.local/dragons/blog/stop-slaying-us
http://test.local/

Это (если вы не могли бы сказать) для CMS, которая включает в себя блог, поэтому слагы будут генерироваться пользователем. У меня есть несколько маршрутов для обработки в первую очередь для зарезервированных пространств имен (например, admin).

Я предполагаю, что сгенерированные пользователем маршруты должны быть направлены на Page контроллер - но я не думаю, что прагматично добавлять строку в rout.rb эффективно. Тогда мой вопрос: как мне обработать первую часть параметров (в данном случае, wizards и dragons), чтобы получить правильную информацию из модели?

Вот одна из моих идей - разделить (как-то) первую часть слага (опять же wizards и dragons) и передать оставшуюся часть слага (например, /wizardfest2012/dates) модели, чтобы получить связанный контент.

Есть какие-нибудь мысли о наиболее эффективном способе сделать это?

1 Ответ

0 голосов
/ 08 сентября 2011

Я не уверен, понимаю ли я, чего вы хотите достичь, но, возможно, это то, что вы хотите:

constraints :camp => /wizards|dragons/ do
  match ':camp/home'    => "pages#home"
  match ':camp/blog/:title' => "pages#blog"
  # ...and all the routes with known components
  match ':camp/*other'  => "pages#other"
end

Вы можете создать before_filter, который распознает params[:camp] и подготовит необходимые модели или все необходимое.

Действие other получит строку "wizardfest2012/dates" как params[:other]. Я надеюсь, что это было то, что вам нужно.

Возможно, стоит прочитать руководство "Маршрутизация с внешней стороны" , если вы его еще не прочитали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...