LINUX.ORG.RU

Необычный роут в Rails

 


0

1

Привет.

Нужен обработчик роута, который примет на себя любой из этих путей:

/nameX, /nameX/nameY, /nameZ/nameW

Помимо этого, нужен роут исключительно для «/».

Спасибо за помощь. Найду в доках - напишу ответ :)



Последнее исправление: wyldrodney (всего исправлений: 1)

Ни разу в жизни не видел Rails код, но подозреваю, что обработчики роутов — это методы какого-то класса или просто функции. Стало быть надо создать один метод, который делает основную работу, а из методов, соответствующих указанным путям, просто вызывать основной метод.

i-rinat ★★★★★
()

Не понял.

get '/name:foo' => 'home#welcome'
get '/name:foo/name:bar' => 'home#welcome'
Started GET "/nameone" for 127.0.0.1 at 2014-05-29 11:58:25 +0300
Processing by HomeController#welcome as HTML
  Parameters: {"foo"=>"one"}

Started GET "/nameone/nametwo" for 127.0.0.1 at 2014-05-29 11:57:40 +0300
Processing by HomeController#welcome as HTML
  Parameters: {"foo"=>"one", "bar"=>"two"}

Что не получается-то? Приведи примеры url-ов.

vladimir-vg ★★
()

Спасибо за помощь.

У меня не получается написать регэксп, аналогичный этому:

/^[\p{Alnum}_]+(\/[\p{Alnum}_]+)*$/

Рельсы не принимают якорь $ в конце регэкспа.

Нужно, чтобы один контроллер принимал пути типа:

«/привет_» и «/привет/ЛОР_»

wyldrodney
() автор топика
Ответ на: комментарий от vladimir-vg

Вложенность этих /name может быть любая.

wyldrodney
() автор топика

Решение:

root 'home#main'

Всякие известные роуты: get 'show' => 'home#show' ...

Роут с отловом нужного нам: get '*path' => 'home#boom', constraints: BoomConstraint.new

Роут для всего прочего: get '*path' => 'home#rrum'

Отлов производит так: http://rusrails.ru/rails-routing#prodvinutye-ogranicheniya

wyldrodney
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.