【问题标题】:Simplify/RESTify my routes(2)!简化/RESTify 我的路线(2)!
【发布时间】:2011-01-20 14:32:14
【问题描述】:

我有办法得到我的图片列表,这里他们有对应的

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>

但是如果 images 是一种资源,我们不能在 routes.rb 中这样定义它(那么 list_filtered、news_feed 或 inside 将被视为一个 ID)

所以我看到了 2 个解决方案:

图像资源之外的 1/ 3 个自定义路由,打破了这些资源的 REST 方法:

images_list/filtered
images_list/news_feed
images_list/inside

2/filtered、news_feed 和 inside 也是 get 参数,我在 index 操作内部发送类似 self.send(params[:type]) 的内容

这两种解决方案都很丑陋,想找到正确的方法,有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails rest routes


    【解决方案1】:

    假设你也想要所有正常的资源路由:

    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

    【讨论】:

      猜你喜欢
      • 2011-09-17
      • 1970-01-01
      • 2012-10-07
      • 2015-06-02
      • 2017-11-25
      • 2017-07-28
      • 2017-12-13
      • 1970-01-01
      • 2012-05-27
      相关资源
      最近更新 更多