2016-05-15 24 views
0

我有一個名爲carts_controller的控制器,在我的路由中,我使用的是寧靜路由,即resources :carts將一個控制器動作映射到另一個動作軌道

我知道資源創建默認的操作,如創建,指數等,但如果我不希望用戶創建並創建一個方法add_to_cart和路由作爲

post '/add_cart/:product_id/' => 'carts#add_to_cart', as: 'add_to_cart' 

這是否我已經定義了它的路線路線被認爲是RESTFUL?

我不想使用所有由資源創建的默認RESTFUL路由。我想要一些自定義操作來代替這些。我的代碼正在工作,但我很困惑,因爲我的概念不清楚。另一件事是,如果我知道在我的路線中需要product_id,我應該讓它們嵌套在產品資源中,否則,如果我定義了我在上面定義的自定義廣告,它會起作用?

任何幫助,將不勝感激!

+0

是什麼'add_to_cart'做,到底是什麼?它是否創建新資源或更新資源?如果是這樣,它創建/更新了哪些資源? –

+0

'add_to_cart'檢查用戶是否有任何購物車。如果不是那麼它會創建新的購物車。 – rubhan

回答

0

我認爲你目前的做法很好。並非所有的控制器動作都能很好地適應標準的CREATE/UPDATE/DESTROY動作。 add_to_cart也很明顯。

作爲替代方案,您可以考慮在購物車控制器的update操作中執行此操作。如果cart有很多products你可以考慮使用嵌套PARAMS:

params: { 
    cart: { 
    products_attributes: [{ 
     "0" => { ...product_attributes_here.. } 
    }, 
    ... 
    } 
} 
相關問題