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之间的区别.他们每个人都创造了不同的路线,每个路线都有自己的目的.
:member 用模式创建路径 /:controller/:id/:your_method
:collection 用模式创建路径 /:controller/:your_method
:new用模式创建路径/:controller/:your_method/new(请注意路径的最后一个元素即new不变)
NewCollection主要不同于意识形态层面.这就是REST大师如何在更大的资源中看到REST"子资源"的创建.
| 归档时间: |
|
| 查看次数: |
7922 次 |
| 最近记录: |