rails路由中的资源和资源之间的差异?

rails路由中resourceresources之间的区别是什么

  resource :geocoder 

  resources :posts 

它们之间有什么区别?

本质上,路由资源是指资源为控制器提供操作能力的时间。

http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use

如果使用复数资源作为处理任何项目的generics请求的方法,那么单个资源是处理当前项目的一种方式。

换句话说,如果我有一个苹果的集合,要检索一个特定的苹果,我必须告诉路由器“苹果”通过发送苹果的ID来检索苹果。 如果我已经拥有一台Apple,则不需要ID。

通过查看它们具有的行为(或路线),注意两者之间的差异:

  • 资源: 索引 ,新建,创建,显示,编辑,更新,销毁
  • 资源:新建,创建,显示,编辑,更新,销毁

在你的例子中:

  1. 控制器“地理编码器”是一种可用于编辑,创建,更新等的单一资源。
  2. 控制器“发布”,是一个多元资源,将处理您可以索引,编辑,创建等的传入通用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 

为了避免报告的错误 。