Сопоставьте одно действие контроллера с другим направлением действий
У меня есть контроллер по имени carts_controller
и в моих маршрутах я использую спокойные маршруты, т.е. resources :carts
,
Я знаю, что ресурсы создают действия по умолчанию, такие как создание, индексирование и т. Д., Но если я не хочу, чтобы пользователь создавал и создавал метод add_to_cart
и в маршрутах я определил его маршрут как
post '/add_cart/:product_id/' => 'carts#add_to_cart', as: 'add_to_cart'
Этот маршрут считается RESTFUL?
Я не хочу использовать все настройки по умолчанию RESTFUL
маршруты, созданные ресурсами. Я хочу некоторые пользовательские действия вместо них. Мой код работает, но я запутался, так как мои концепции не ясны. Другое дело, если я знаю, что мне нужно product_id
в моих маршрутах, я должен сделать их вложенными в ресурсы продуктов, или это будет работать, если я определю пользовательское объявление, которое я определил выше?
Любая помощь будет оценена!
1 ответ
Я думаю, что ваш нынешний подход в порядке. Не все действия контроллера хорошо вписываются в стандартные действия CREATE/UPDATE/DESTROY. Также довольно очевидно, что add_to_cart
делает.
В качестве альтернативы вы можете рассмотреть возможность сделать это в update
действие контроллера тележки. Если cart
имеет много products
Вы можете рассмотреть возможность использования вложенных параметров:
params: {
cart: {
products_attributes: [{
"0" => { ...product_attributes_here.. }
},
...
}
}