有什么区别:new,:collection和:成员路线?

Dan*_*ski 16 ruby-on-rails rails-routing

我已经阅读了文档,但我仍然不确定我是否了解所有内容.

特别是为什么有一个:new参数.据我了解,它可以用:collection参数替换.

那么这三种路线之间的区别是什么?

Dam*_*IEU 32

不同之处在于生成的URL.
我们猜三个资源:

map.resources :users, :collection => { :rss => :get }
map.resources :users, :member => { :profile => :get }
map.resources :users, :new => { :draft => :get }
Run Code Online (Sandbox Code Playgroud)

第一条路线将创建:

/users/rss
Run Code Online (Sandbox Code Playgroud)

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

第二个将创建动作"profile"作为对象的成员.所以我们将:

/users/1/profile
Run Code Online (Sandbox Code Playgroud)

"1"是用户的to_param.我们需要用户的ID来显示个人资料.

第三个将创建动作"草稿"作为新动作的成员.所以我们将:

/users/new/draft
Run Code Online (Sandbox Code Playgroud)

"草稿"操作在接受其创建之前显示用户的草稿.

这就是:collection,:member和:new之间的区别.他们每个人都创造了不同的路线,每个路线都有自己的目的.


Hen*_*sek 9

:member 用模式创建路径 /:controller/:id/:your_method

:collection 用模式创建路径 /:controller/:your_method

:new用模式创建路径/:controller/:your_method/new(请注意路径的最后一个元素即new不变)

NewCollection主要不同于意识形态层面.这就是REST大师如何在更大的资源中看到REST"子资源"的创建.