2

I came across line:

resources :assesments, default: {action: :index }

inside rails routes.

rake routes for resources :assesments prints:

        Prefix Verb   URI Pattern                    Controller#Action
    assesments GET    /assesments(.:format)          assesments#index
               POST   /assesments(.:format)          assesments#create
 new_assesment GET    /assesments/new(.:format)      assesments#new
edit_assesment GET    /assesments/:id/edit(.:format) assesments#edit
     assesment GET    /assesments/:id(.:format)      assesments#show
               PATCH  /assesments/:id(.:format)      assesments#update
               PUT    /assesments/:id(.:format)      assesments#update
               DELETE /assesments/:id(.:format)      assesments#destroy

and for default: { action: :index} it prints:

        Prefix Verb   URI Pattern                    Controller#Action
    assesments GET    /assesments(.:format)          assesments#index {:default=>{:action=>:index}}
               POST   /assesments(.:format)          assesments#create {:default=>{:action=>:index}}
 new_assesment GET    /assesments/new(.:format)      assesments#new {:default=>{:action=>:index}}
edit_assesment GET    /assesments/:id/edit(.:format) assesments#edit {:default=>{:action=>:index}}
     assesment GET    /assesments/:id(.:format)      assesments#show {:default=>{:action=>:index}}
               PATCH  /assesments/:id(.:format)      assesments#update {:default=>{:action=>:index}}
               PUT    /assesments/:id(.:format)      assesments#update {:default=>{:action=>:index}}
               DELETE /assesments/:id(.:format)      assesments#destroy {:default=>{:action=>:index}}

what does default action change?

edit

I made a typo. It should be:

resources :assesments, defaults: {action: :index }

and rake routes looks normally now:

        Prefix Verb   URI Pattern                    Controller#Action
    assesments GET    /assesments(.:format)          assesments#index
               POST   /assesments(.:format)          assesments#create
 new_assesment GET    /assesments/new(.:format)      assesments#new
edit_assesment GET    /assesments/:id/edit(.:format) assesments#edit
     assesment GET    /assesments/:id(.:format)      assesments#show
               PATCH  /assesments/:id(.:format)      assesments#update
               PUT    /assesments/:id(.:format)      assesments#update
               DELETE /assesments/:id(.:format)      assesments#destroy
Filip Bartuzi
  • 5,711
  • 7
  • 54
  • 102

1 Answers1

0

TL;DR

if we would have

resources :assesments, defaults: { format: 'jpg' }, default: { format: 'xml'}

and we would visit localhost/assessments than params hash would look like:

{
 "format"=>"jpg", # FROM defaults: {}
 "default"=> { "format"=>"xml" }, # FROM default: {}
 "controller"=>"assesments", WE CAN NOT CHANGE IT. COMES FROM RAILS
 "action"=>"index" # WE CAN NOT CHANGE IT. COMES FROM RAILS
}

--- more

defaults: { anything_key: 'any_value' } will add hash content to params hash accessible inside controller (however you can not override values provided by controller - that is: :action and :controller).

Adding defaults: { action: :anything } will not have any effect but adding defaults: { format: 'jpg' } will add { format: 'jpg' } to params hash inside all controllers wrapped by routing scope.

Adding default: { some_key: 'value' } will add this hash (default: { some_key: 'value' }) to every params hash inside controllers wrapped by routing scope.

Filip Bartuzi
  • 5,711
  • 7
  • 54
  • 102