routes裡的member跟collection的差別

在rails的RESTful裡有預設的7個HTTP Verbs
「index」「show」「new」「edit」「create」「update」「destroy」
當這些不夠用想要自訂一些路由的時候就可以用member跟collection

resources :products do
    member do
      post :add_to_cart
    end
  end

  resources :carts do
    collection do
      post :checkout
      delete :clean
    end
  end

  resources :orders do
    member do
      get :pay_with_credit_card
    end
  end

那麼member跟collection的差別是在哪裡呢?
在網路上看的一些資料都這樣子說
member是操作單一筆資料
collection是操作複數或無資料的操作
不過這個說法我自己實在很難理解啊
找了一些資料消化了一下用最簡單的方式來說就是
member需要:id,collection不用:id
使用member的方法的時候需要帶入參數
使用collection的方法時則不用

參考資料
Rails3 routes.rb まとめ
ルーティングにアクションを追加
routes 裡面 member 跟 collection 的差別是什麼?

comments powered by Disqus