Ruby on rails 什么';:新建、:收集和:成员路由之间的区别是什么?

Ruby on rails 什么';:新建、:收集和:成员路由之间的区别是什么?,ruby-on-rails,rails-routing,Ruby On Rails,Rails Routing,我读过这本书,但我仍然不确定我是否理解所有的内容 特别是为什么有一个:新的参数。据我所知,它可以替换为:collection参数 那么这三种类型的路由有什么区别呢?区别在于生成的URL。 让我们猜测三种资源: map.resources :users, :collection => { :rss => :get } map.resources :users, :member => { :profile => :get } map.resources :users, :ne

我读过这本书,但我仍然不确定我是否理解所有的内容

特别是为什么有一个
:新的
参数。据我所知,它可以替换为
:collection
参数


那么这三种类型的路由有什么区别呢?

区别在于生成的URL。
让我们猜测三种资源:

map.resources :users, :collection => { :rss => :get }
map.resources :users, :member => { :profile => :get }
map.resources :users, :new => { :draft => :get }
第一条管线将创建:

/users/rss
控制器名称和操作名称之间没有任何内容。我们不需要任何其他参数来获取用户的列表rss提要

第二个将创建动作“profile”作为对象的成员。因此,我们将有:

/users/1/profile
/users/new/draft
“1”是用户的
to_参数
。我们需要一个用户的id来显示配置文件

第三个将作为新操作的成员创建操作“草稿”。因此,我们将有:

/users/1/profile
/users/new/draft
“草稿”操作在接受用户的创建之前显示用户的草稿


这就是:collection、:member和:new之间的区别。他们每个人都创建不同的路由,每个路由都有自己的目的。

:member
使用模式
/:controller/:id/:your_方法创建路径

:collection
使用模式
/:controller/:your_方法创建路径

:new
使用模式
/:controller/:your_method/new
创建路径(请注意路径的最后一个元素,即
new
是常量)


New
Collection
的区别主要在于意识形态层面。REST专家就是这样看待在更大的资源中创建REST“子资源”的。Damien的解释基本上是正确的,除了关于:new的部分

请仔细阅读RubyonRails路由指南,它解释了从内到外的路由,然后再回来。第3.11.3节(添加新路由)描述了:New的功能,它与:member和:collection非常不同


基本上map.resources:photos,:new=>{:upload=>:post}将使用post-HTTP动词创建/photos/upload。

我意识到这是一篇旧文章。我在使用
成员
资源的控制器之间的操作路由方面遇到一些问题。我能够解决我的问题,但我仍然不确定
成员
为什么会导致冲突。我试图搜索这个,但找不到我要找的信息。我相信你会知道的。如果你有时间的话,也许你可以停下来看看我的帖子,分享一些智慧。谢谢map.resources的作用是什么?我如何获得模式为
/:controller/:your_method/:id
的路径?