Сопоставьте одно действие контроллера с другим направлением действий

У меня есть контроллер по имени 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.. }
    },
    ...
  }
}
Другие вопросы по тегам