Пользовательский запрос маршрута Rails - PullRequest
0 голосов
/ 21 мая 2010

Я собираю функциональность коротких URL-адресов для приложения, над которым я работаю, и теперь он работает и превращает длинные URL-адреса в короткие URL-адреса с помощью base36, кодирующего идентификатор записи, указывающей на более длинный URL, например:

http://localhost:3000/7ps -> http://localhost:3000/the/long/url

Я изо всех сил пытаюсь написать маршрут, который будет перехватывать запросы на короткий URL-адрес, и в то же время разрешать запросы на другие действительные URL-адреса в приложении.

Можно ли использовать маршрут, который будет нацелен только на значения в кодировке base36 после домена?

Спасибо за любую помощь!

Ответы [ 2 ]

2 голосов
/ 21 мая 2010

Вы можете добавить:

map.encoded ":encoded_url", :controller => :encoded_urls, :action => :please_decode_me

в конце ваших маршрутов. Затем он должен поймать все, что не поймано другими маршрутами.

1 голос
/ 21 мая 2010

Короткий ответ: «Это зависит». Вы можете добавить маршрут в конце вашего файла маршрутов в качестве универсального. Однако, если у вас есть реальные маршруты длиной в одно слово, это в конечном итоге приведет к ошибке.

Например: если у вас есть путь, который выглядит как http://localhost:3000/home, что это? Это страница home или короткий URL для объекта # 825062? Любой путь из одного слова, который у вас есть в приложении, будет иметь эту проблему.

Очень простым способом было бы добавить один символ в качестве первого каталога в вашем URI.

http://localhost:3000/r/abc123

Или любое письмо, которое вы хотите. Затем вы можете легко сопоставить все, что начинается с / r /, с вашим контроллером поиска коротких URL.

map.connect "/r/:short_url", :controller => "controller_name", :action => "name_of_action_that_looks_up_short_urls"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...