Resposta da API JSON para ‘Nenhuma correspondência de rota’

No seu routes.rb, adicione a última linha

MyAppApi::Application.routes.draw do
# omitted lines
match
'*a', :to => 'errors#routing'
end

NOTA: O “a” é na verdade um parâmetro na técnica Rails 3 Route Globbing. Por exemplo, se sua url era / algum-caminho-aleatório, então params [: a] é igual a “algum-caminho-aleatório”. Mas observe que a barra anterior não está lá. Para simular o caminho real, usei em request.pathvez disso.

Crie errors_controller.rbque herde deapplication_controller.rb

class ErrorsController < ApplicationController
def routing
not_found
(ActionController::RoutingError.new("No route matches [#{request.method}] #{request.path}"))
end
end

A exceção lançará a mensagem semelhante a uma mensagem sem rota típica, com o methode opath

Então, em seu application_controller.rb, adicione a not_foundação

class ApplicationController < ActionController::Base

rescue_from
ActiveRecord::RecordNotFound, :with => :not_found

def not_found(exception)
respond_to
do |format|
format
.json { render :json => {:error => exception.message}, :status => :not_found }
format
.any { render :text => "Error: #{exception.message}", :status => :not_found }
end
end
end

O cliente obterá esta jsonresposta para o caminho não roteável

{
error
: "No route matches [GET] /groups/cf8260ab-a431-4e40-8520-a8d24c681639/join"
}