rails routingresource
和in有什么区别resources
resource :geocoder
和
resources :posts
它们之间的真正区别是什么?
rails routingresource
和in有什么区别resources
resource :geocoder
和
resources :posts
它们之间的真正区别是什么?
本质上,路由资源是资源赋予控制器动作能力的时候。
http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use
如果将多元化资源用作处理任何项目的通用请求的一种方式,那么单一资源就是处理手头当前项目的一种方式。
所以换句话说,如果我有一个苹果集合,要检索一个特定的苹果,我必须通过发送苹果的 ID 告诉路由器“苹果”要检索什么苹果。如果我已经有一个 Apple,则不需要 ID。
通过查看它们具有的操作(或路线)来注意两者之间的差异:
在您的示例中:
奇异资源:
有时,您有一个资源,客户端总是在不引用 ID 的情况下查找该资源。例如,您希望/profile
始终显示当前登录用户的个人资料。
或者,通常您当前登录的用户属于单个组织,因此转到他/她的组织资料页面可以有两条路线
#1
/organizations/:id
#2
/organization #simply
在这里,后面的实现更有意义;是不是?您从关联中获取组织对象
# in organizations#show
@organization = current_user.organization
要定义这样的单一资源,您可以使用resource
方法:示例
# in routes.rb
resource :organization
在您的应用程序中创建六个不同的路由,所有路由都映射到 Organizations 控制器:
而您使用resources
方法定义多个资源
resources :organizations
http://guides.rubyonrails.org/routing.html#singular-resources
有时,您有一个资源,客户端总是在不引用 ID 的情况下查找该资源。例如,您希望 /profile 始终显示当前登录用户的个人资料。在这种情况下,您可以使用单一资源将 /profile(而不是 /profile/:id)映射到 show 操作。
查看它的一个好方法是资源没有索引操作,因为它应该只是一个。