rails rails
中resource
和resources
之间的区别是什么?
resource :geocoder
和
resources :posts
他们之间有什么真正的区别?
答案 0 :(得分:30)
本质上,路由资源是资源为控制器提供动作能力的时候。
http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use
如果使用复数资源作为处理任何项目的通用请求的方法,那么单一资源就是处理当前项目的一种方式。
所以换句话说,如果我有苹果的集合,要检索一个特定的苹果,我必须告诉路由器“苹果”通过发送苹果的ID来检索苹果。如果我已经有一台Apple,则不需要ID。
通过查看他们所拥有的行动(或路线)来注意两者之间的差异:
在你的例子中:
答案 1 :(得分:10)
http://guides.rubyonrails.org/routing.html#singular-resources
有时,您拥有一个客户端始终无需查找的资源 引用ID。例如,您希望/ profile始终显示 当前登录用户的配置文件。在这种情况下,您可以使用 一个奇异的资源来映射/配置文件(而不是/ profile /:id) 展示行动。
看到它的一个好方法是资源没有索引操作,因为它假设只是一个。
答案 2 :(得分:9)
奇异资源:
有时,您拥有一个客户端始终查找而不引用ID的资源。例如,您希望/profile
始终显示当前登录用户的个人资料。
或者,通常您当前登录的用户属于单个组织,因此要转到他/她的组织个人资料页面,可以有两个路径
#1
/organizations/:id
#2
/organization #simply
这里,后面的实现更有意义;是不是?你从关联
获得组织对象# in organizations#show
@organization = current_user.organization
要定义这样的单一资源,请使用resource
方法:示例
# in routes.rb
resource :organization
在您的应用程序中创建六个不同的路径,所有路径都映射到组织控制器:
然而,您使用resources
方法
resources :organizations
答案 3 :(得分:3)
我认为只是索引视图。
还报告了使用资源助手和表单助手进行路由的问题。就个人而言,我使用语法:
resources :someresource, except: :index
为了避免reported bugs。