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

时间:2012-07-06 05:08:56

标签: ruby-on-rails ruby ruby-on-rails-3 routes

rails rails

resourceresources之间的区别是什么?
 resource :geocoder

 resources :posts

他们之间有什么真正的区别?

4 个答案:

答案 0 :(得分:30)

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

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

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

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

通过查看他们所拥有的行动(或路线)来注意两者之间的差异:

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

在你的例子中:

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

答案 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

在您的应用程序中创建六个不同的路径,所有路径都映射到组织控制器:

enter image description here

然而,您使用resources方法

定义多个资源
resources :organizations

enter image description here

答案 3 :(得分:3)

我认为只是索引视图。

还报告了使用资源助手和表单助手进行路由的问题。就个人而言,我使用语法:

resources :someresource, except: :index 

为了避免reported bugs