gpt4 book ai didi

ruby-on-rails - 成员和收集路线是什么意思?

转载 作者:行者123 更新时间:2023-12-03 11:31:31 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





difference between collection route and member route in ruby on rails?

(4 个回答)


8年前关闭。




阅读:http://guides.rubyonrails.org/routing.html#adding-more-restful-actions

添加“成员(member)路线”是什么意思?

还是向集合添加路线?

在谈论路由时,什么是成员和集合?

最佳答案

它们都是向 Rails 中基于资源的路由添加额外操作的两种方式。

  • A member route requires an ID, because it acts on a member.
  • A collection route doesn't require an ID because it acts on a collection of objects.


我喜欢从 RESTful URL 的角度来考虑它们。考虑资源/模型的基础知识 Foo
GET    /foo            # FooController#index
GET /foo/:id # FooController#show
GET /foo/new # FooController#new
POST /foo # FooController#create
GET /foo/:id/edit # FooController#edit
PUT /foo/:id # FooController#update
DELETE /foo/:id # FooController#destroy

注意如何:
  • 有些路由有 :id Foo.id 的占位符,因此引用特定的 Foo
  • 一些路由没有 :id,因此引用所有 Foo(和/或没有特定的 foo,如 #new 和 #create)
  • 一些路由(index/create、show/update/destroy)有相同的 URL,并使用 HTTP 方法来区分它们
  • 一些路由(编辑/显示)基本相同(方法和 URL 前缀),除了末尾不同的后缀(包括“无后缀”)。

  • 成员路由和集合路由允许您使用我上面列出的相同技术添加其他路由/操作。

    成员路由使用您提供的 URL 后缀和 HTTP 方法将自定义操作添加到特定实例。所以,如果你有 :member => { :bar => :get } 的成员路由声明.你会得到一个额外的路线:
    GET    /foo/:id/bar # FooController#bar

    注意它是如何重载的 GET /foo/:id和“编辑”一样。这就是您实现“删除”操作的方式,该操作为“销毁”操作提供 UI。

    类似地,集合路由会向集合和/或非特定实例添加重载(由您决定它的确切含义)。所以,如果你声明 :collection => { :baz => :get } ,你会得到一个额外的路线:
    GET    /foo/baz        # FooController#baz

    ...与 new 的方式非常相似.

    您还可以自定义 HTTP 方法。

    例如,我最近有一个项目,我需要对 Comment 执行“回复”操作。 .和 Comment#create的思路基本一样(使用 POST),除了它引用特定的父 Comment .所以,我创建了一条成员(member)路线: :member => { :reply => :post } .这给了我:
    POST   /comment/:id/reply   # CommentController#reply

    这使路线保持安静,同时仍然扩展了基本的 7 个 Action 。

    关于ruby-on-rails - 成员和收集路线是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5182734/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com