2016-05-15 31 views
0

コントローラーがcarts_controllerであり、私のルートに安静なルート、つまりresources :cartsを使用しています。別のアクションに1つのコントローラーアクションをマップする

私はリソースが作成、インデックスなどのように、デフォルトのアクションを作成する知っているが、私は、ユーザーにしたくない場合は方法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アクションでこれを行うこともできます。 cartproductsあなたが入れ子になったのparamsを使用して、多くの可能性を検討している場合:

params: { 
    cart: { 
    products_attributes: [{ 
     "0" => { ...product_attributes_here.. } 
    }, 
    ... 
    } 
} 
関連する問題