У меня проблема с маршрутизацией. мои маршруты сейчас выглядят так:
http://localhost:3000/events?category=popular&city=london&country=united-kingdom
В настоящее время он просто смотрит на ресурсы: события (то есть контроллер событий, действие индекса) и действие индекса. У меня много условий if
. Особенно, когда приложение должно определить, какие партиалы загружать, основываясь на строках запроса.
Есть ли лучший способ реорганизовать это? Я не большой поклонник строк запроса в URL. И что-то подобное может быть решено в маршрутизации. Просто ищу правильное направление. Ищу URL как:
/events/london
/events/london/popular
/events/london/united-kingdom
/events/united-kingdom
/events/united-kingdom/popular
/events/london/united-kingdom/popular
В книге *1011* Anti Patterns, специально на стр. 181, предлагается создавать отдельные контроллеры. Который будет организовывать код дальше и все еще держать его ОТЛИЧНЫМ.
Теоретически, я думаю, что он предлагает что-то вроде этого:
match 'events/:city', :controller => 'events/cities', :action => 'index', :as => 'by_city', :via => :get
match 'events/:city/:category', :controller => 'events/cities_and_categories', :action => 'index', :as => 'by_city_and_category', :via => :get
match 'events/:city/:country', :controller => 'events/cities_and_countries', :action => 'index', :as => 'by_city_and_country', :via => :get
match 'events/:country', :controller => 'events/countries', :action => 'index', :as => 'by_country', :via => :get
match 'events/:country/:category', :controller => 'events/countries_and_categories', :action => 'index', :as => 'by_country_and_category', :via => :get
match 'events/:city/:country/:category', :controller => 'events/cities_and_countries_and_categories', :action => 'index', :as => 'by_city_and_country_and_category', :via => :get
ИЛИ , отфильтрованные термины ДЕЙСТВИТЕЛЬНО должны быть в формате строки запроса?
Если у вас есть предложения / лучший подход. Упомяните.