What does (.:format) mean in rake routes' output?

rake, routes, ruby-on-rails-3

Solution

If you check the `index` action of your `Users Controller` then you will see something like this

def index
  @users = User.all

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @users }
  end
end

So, this format is the type of response which will be generated.

In routes, a placeholder for the type of response is created irrespective of whatever format has been defined in the action of the controller.

So, if your URL is something like :-

users GET /users        --> users/index.html.erb will be rendered
users GET /users.json   --> users/index.json.erb will be rendered

Similarly, if you want response in `PDF` or `xls` format, then you just have to define `format.pdf` or `format.xls` and also you have to define these new `MIME` types which are not there by default in rails in some initializer file.

So, then if a request is made like :-

users GET /users.xls     --> users/index.xls.erb will be rendered

Your routes file will then just look for the `format.xls` in the index action and respective view file means `users/index.xls.erb` will be rendered.

Problem

What does `(.:format)` mean in `rake routes`' output? ``` users GET /users(.:format) users#index ```

Original source