2016-05-15 3 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.. } 
    }, 
    ... 
    } 
}