The reason why it is displaying the page instead of a JSON response is due to the sample application's routes.
namespace :api, path: '/', constraints: { subdomain: 'api' } do
resources :users
end
constraints subdomain: ['', 'www'] do
resources :users do
resources :phones
end
root 'users#index'
end
In the example application's routes, there is a constraints on the subdomain where if it is empty, it will default to the web view of the application. If you're using an API only, you can remove the constraints block as well as the constraints on the subdomain: 'api'. So your routes may look something like
Rails.application.routes.draw do
post 'user_token' => 'user_token#create'
devise_for :users
namespace :api, path: '/' do
resources :users do
resources :phones
end
end
end