0

Issue: When a user (when signed in) creates an order, they are sent to the OrderControllers show page which can only be accessed if signed in by both the buyer and seller. From here they can edit/update their order, etc.

We also have guest_user, someone who isn't signed in, and for them I need a order confirmation in the browser (I'm using Devise gem)

I have created a method:

def order_confirmation

In the OrdersController.

Although, how can I nest this within orders so the page knows which order to show.

Is this possible to nest methods under its' own controllers, or should i just create a small controller only for order confirmations?

For example: example.com/orders/1/order-confirmation

Maybe there are better ways to go about this other than just nesting and creating a controller?

I Tried:

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

With:

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

But it won't work how i want i t seems.

The rake routes gives me:

order_confirmation_orders GET    /orders/order_confirmation(.:format)

How can i get?:

order_order_confirmation_orders GET    /orders/id/order_confirmation(.:format)
uno
  • 1,421
  • 12
  • 38

1 Answers1

0

I was able to figure this out from the help of this SO post:

Rails: Custom nested controller actions

By using:

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

This creates:

 order_confirmation_order GET    /orders/:id/order_confirmation(.:format)                                                 orders#order_confirmation
uno
  • 1,421
  • 12
  • 38