【问题标题】:Rails routes conventionsRails 路线约定
【发布时间】:2018-07-08 10:35:38
【问题描述】:

我对铁路路线约定有一些疑问。

让我们有如下路线

Rails.application.routes.draw do
  resources :products, only: [:index]
  resource :cart, only: [:show]
  resources :order_items, only: [:create, :update, :destroy]
  root to: "products#index"
end
  • 我的问题是为什么购物车不像其他资源那样多元化。

  • 我们什么时候应该多元化资源?

  • 与其定义自定义 get 和 post 路由,不如使用资源更好?

【问题讨论】:

    标签: ruby-on-rails ruby routes


    【解决方案1】:

    有时,您需要一条不被 ID 引用的单一路由。例如,localhost:3000/me

    因此,如果您在routes.rb 中写入resource :me,这将为您生成所有路由,除了索引路由,不同之处在于,在显示、编辑、更新的情况下,所有路由都不会使用 ID , 创建和销毁路由,因为我们认为 me 是一个单一的实体。

    因此,如果您只想要个人资料页面的单一路线,您只需编写

    resource :me, only: [:show]

    【讨论】:

      【解决方案2】:
      1. 据我所知,购物车是每个访客的单一属性,我们没有购物车模型(这是一个概念),但我们有很多产品、产品模型和索引操作来获取列表所有产品。所以因为 cart 是一个单一的属性,所以它不是复数的。 你可以在这个question中找到资源和资源之间的区别@

      2. resource 保留标准操作列表(显示、创建、更新、销毁...),我们可以用一行创建所有挑逗标准路由,因此通过使用资源,我们的代码会更干净。

      【讨论】:

        【解决方案3】:

        首先我建议您阅读Rails Guides,它包含您所有问题的答案。

        我的问题是为什么购物车不像其他资源那样多元化。

        有时,您有一个资源,客户端总是在不引用 ID 的情况下查找该资源。定义 resource :post 而不是 resources :post 您将拥有类似 /post 而不是 /post/:post_id ref 的路由

        我们什么时候应该多元化资源?

        如果您需要路由中的ID 记录并且它是必需的。

        与其定义自定义 get 和 post 路由,不如使用资源更好?

        如果你有一个基本的 RESTful 路由,最好使用resource(s) 方法,因为它可以缩短为resources :post,而不是表示每个动作都在它自己上也更少的代码 == 更少的错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-02
          • 1970-01-01
          • 1970-01-01
          • 2014-09-09
          • 1970-01-01
          • 2015-02-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多