Confusion about passing instance variables to redirect_to method. As seen in Rails Guides Confusion about passing instance variables to redirect_to method. As seen in Rails Guides ruby-on-rails ruby-on-rails

Confusion about passing instance variables to redirect_to method. As seen in Rails Guides


redirect_to documentation

redirect_to(options = {}, response_status = {}) Redirects the browser to the target specified in options. Record - The URL will be generated by calling url_for with the options, which will reference a named URL for that record.

So when one does redirect_to(@book) @book is a specific record with an id .

Thus, the associated records (in this case @book) show method is used as a template.

In addition to above, if you look at the routes.rb file which defines these paths you will notice

resources :books

Now this route is essentially translated as (you can see by running rake routes)

    books GET    /books(.:format)                   books#index          POST   /books(.:format)                   books#create new_book GET    /books/new(.:format)               books#newedit_book GET    /books/:id/edit(.:format)          books#edit     book GET    /books/:id(.:format)               books#show          PUT    /books/:id(.:format)               books#update          DELETE /books/:id(.:format)               books#destroy

Notice the book GET /books/:id books#show - which gets matched when you do redirect_to(@book)


It'll redirect to a book, for example "/books/65"