保华的Rails学习笔记

collection do与member do的区别

在routes.rb中,7个默认的action之外的action,要使用member do或者collection do来产生新的path

二者的区别在于:

member是要求id的,它产生的path中,是有id参数的
但是collection是不要求id的,它产生的path中,是没有id这个参数的

member一次只能处理一个object
collection一次可以处理一个collect(多个object)

下边举例说明(routes.rb):

resources :products do
    member do
      post :add_to_cart
    end
  end

产生的path为:

resources :carts do
    collection do
      delete :clean
    end
  end

产生的path为:


path中没有id

在教材中,add_to_cart是把商品加到购物车,所以是一个一个加的,需要id(produdct_id),因此是用的member
clean_carts是清空购物车,不需要商品id,它是用的collection