Вложенный ресурс из метода собственных контроллеров - или создать совершенно новый контроллер? - PullRequest
0 голосов
/ 06 января 2019

Проблема : когда пользователь (при входе в систему) создает заказ, он отправляется на страницу показа OrderControllers, доступ к которой возможен только в том случае, если он выполнен как покупателем, так и продавцом. Отсюда они могут редактировать / обновлять свой заказ и т. Д.

У нас также есть guest_user, кто-то, кто не вошел в систему, и для них мне нужно подтверждение заказа в браузере (я использую гем Devise)

Я создал метод:

def order_confirmation

В контроллере Orders.

Хотя, как я могу вложить это в заказы, чтобы страница знала, какой заказ показывать.

Возможно ли вложить методы под свои собственные контроллеры, или я должен просто создать маленький контроллер только для подтверждения заказа?

Например : example.com/orders/1/order-confirmation

Может быть, есть и другие способы, кроме как вложить и создать контроллер?

Я пытался :

  resources :orders do
    collection do
      get 'order_confirmation'
    end
  end

С

  def order_confirmation
    @order = Order.all.find(params[:id])
  end

Но это не сработает так, как я хочу.

Рейк-маршруты дают мне :

order_confirmation_orders GET    /orders/order_confirmation(.:format)

Как я могу получить? :

order_order_confirmation_orders GET    /orders/id/order_confirmation(.:format)

1 Ответ

0 голосов
/ 06 января 2019

Мне удалось выяснить это с помощью этого SO сообщения:

Rails: пользовательские действия вложенного контроллера

Используя:

resources :orders do
  get 'order_confirmation', :on => :member
end

Это создает:

 order_confirmation_order GET    /orders/:id/order_confirmation(.:format)                                                 orders#order_confirmation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...