Упростите / ВОССТАНОВИТЕ мои маршруты (2)! - PullRequest
2 голосов
/ 20 января 2011

У меня есть способы получить мой список изображений, вот они с соответствующими

1 / получить изображения в соответствии с фильтрами, отправленными в качестве параметров

images/list_filtered?order=<order>&page=<page>&per_page=<count_per_page>&user_id=<user_id>&device_id=<device_id>

2 / получить изображения излюди, за которыми следует user_id: новостная лента

images/news_feed?order=<order>&page=<page>&per_page=<count_per_page>&user_id=<user_id>&device_id=<device_id>

3 / изображения внутри границ (т. е. внутри карты)

images/inside?order=<order>&page=<page>&per_page=<count_per_page>&user_id=<user_id>&device_id=<device_id>&lat1=<lat1>&lng1=<lng1>&lat2=<lat2>&lng2=<lng2>

Но мы не можем определить это таким образом в rout.rbесли images является ресурсом (тогда list_filtered, news_feed или внутри будут рассматриваться как ID)

Итак, я вижу 2 решения:

1/3 пользовательских маршрутов за пределами ресурсов изображений, нарушаяПодход REST для них:

images_list/filtered
images_list/news_feed
images_list/inside

2 / Filter, news_feed и inside также являются параметрами get, и я отправляю внутри действия index что-то вроде self.send(params[:type])

Оба решениядовольно некрасиво, и хотел бы найти правильный подход, есть мысли?

1 Ответ

3 голосов
/ 20 января 2011

Предполагая, что вам также нужны все обычные маршруты ресурсов:

resources :images do
  collection do
    get 'filtered'
    get 'news_feed'
    get 'inside'
  end
end

, тогда rake routes выведет:

 filtered_images GET    /images/filtered(.:format)  {:action=>"filtered", :controller=>"images"}
news_feed_images GET    /images/news_feed(.:format) {:action=>"news_feed", :controller=>"images"}
   inside_images GET    /images/inside(.:format)    {:action=>"inside", :controller=>"images"}
          images GET    /images(.:format)           {:action=>"index", :controller=>"images"}
                 POST   /images(.:format)           {:action=>"create", :controller=>"images"}
       new_image GET    /images/new(.:format)       {:action=>"new", :controller=>"images"}
      edit_image GET    /images/:id/edit(.:format)  {:action=>"edit", :controller=>"images"}
           image GET    /images/:id(.:format)       {:action=>"show", :controller=>"images"}
                 PUT    /images/:id(.:format)       {:action=>"update", :controller=>"images"}
                 DELETE /images/:id(.:format)       {:action=>"destroy", :controller=>"images"}

http://guides.rubyonrails.org/routing.html#adding-collection-routes

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