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