ruby-on-rails - 简化/RESTify 我的路线(2)!

标签 ruby-on-rails rest routes

我有办法获取我的图像列表,这里有相应的

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/边界内的图像(即 map 内)

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 也是获取参数,我在 index 操作中使用 self.send(params[:type])

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

最佳答案

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

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

然后rake paths将输出:

 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

关于ruby-on-rails - 简化/RESTify 我的路线(2)!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4748338/

相关文章:

ruby-on-rails - 如何在 Rails REST API 中使用外部提供的 ID?

go - 处理 api 版本的惯用方法是什么

ruby-on-rails - Ruby on Rails Devise,身份验证失败时如何更改登录路径?

ruby-on-rails - 如何让 Rake 任务在我的 Sinantra 应用程序/环境下运行?

ruby-on-rails - 数据库查询 - 不包括的数组

rest - 如何实现基于角色的 REST API

java - Spring MVC,将@ExceptionHandler 迁移到 HandlerExceptionResolver 以获得 RESTful 服务

javascript - 通过laravel中的javascript函数在路由中传递两个变量

ruby-on-rails - Mongoid 持久性问题

ruby-on-rails - Ruby on Rails 动态模型