2015-01-06 2 views
0

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

Моего контроллер называется SiteMap Мой маршрут место для SiteMap является «д» для запроса

У нас есть рабочие места по

  1. промышленности, например, Розничная торговля
  2. Местоположение, например. Sydney, Melbourne
  3. Промышленность, разбитая по местоположению, например. Гостеприимство в Сиднее

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

  1. Индустрия
    • www.somedomain.com/j/hosptality-jobs
    • подсказка: -jobs суффикса будет установить: промышленность пары
    • :industry => hospitality
  2. по месту нахождения
    • www.somedomain.com/j/jobs-in-sydney
    • подсказка: jobs-in- префикс будет установить: расположение парам
    • :location => sydney
  3. По промышленности и местоположение
    • www.somedomain.com/j/hospitality-jobs/in-sydney
    • , как указано выше но распространение более 2 сегментов URL-адресов
    • :industry => hospitality
    • :location => sydney

я либо хочу пойти в 3-х различных действий, основанных на маршруте или я счастлив пойти в одно действие, пока есть богатые переменные, обозначающие динамические данные и тип (т.е. Тип = Промышленность | Город)

ответ

0

Я думаю, что единственный способ, которым Вы могли бы сделать это использовать прием всей маршрут:.

get '/j/*path', to: 'jobs#route' 

(Действию контроллера нужно лучшее название)

Действие считывает путь, используя ваш логики и маршрутов к правильному пути с соответствующими параметрами, используя redirect_to.

0

Я получил все 3 маршрута рабочих плюс 4-й поймать все маршруты для плохого URL,

get '/q/(:industry)-jobs' => 'sitemap#industry', :as => :sitemap_by_industry 
get '/q/jobs-in-(:location)' => 'sitemap#location', :as => :sitemap_by_location 
get '/q/(:industry)-jobs/in-(:location)' => 'sitemap#industry_location', :as => :sitemap_by_industry_location 

# This catch is used if someone starts playing around with the URL's and we can't map to the three listed routes 
get '/q(/:bad1(/:bad2))' => 'sitemap#sitemap', :as => :sitemap 
  1. www.somedomain.com/q/hosptality-jobs
    • бьет маршрут 1 и настройки:
    • :industry => hospitality
  2. www.somedomain.com/q/jobs-in-sydney
    • бьет маршрут 2 и установка:
    • :location => sydney
  3. www.somedomain.com/q/hospitality-jobs/in-sydney
    • бьет маршрут 3 и установка:
    • :industry => hospitality
    • :location => sydney
  4. follwoing недействительной URL, будет весь хит 4-го поймать все маршрут
    • www.somedomain.com/q
    • www.somedomain.com/q/
    • www.somedomain.com/q/hosptality-joXXbs
    • www.somedomain.com/q/jobXXs-in-sydney
    • www.somedomain.com/q/hospitality-jobXXs/in-sydney
Смежные вопросы