2012-05-21 19 views

Respuesta

65

Puede modificar sus routes.rb archivos para especificar el formato predeterminado

routes.rb

resources :clients, defaults: {format: :json} 

Esto modificará el formato de respuesta predeterminada para su entera clients_controller

+0

¡gracias, eso es lo que estaba buscando! – Tronic

+4

¿Se puede agregar esto globalmente para todos los recursos? – shredding

+4

Para agregar el formato predeterminado a todos los recursos, declare los recursos en un bloque 'default ':' formato predeterminado:' json '{resources: clients; recursos: productos} '. –

10

Si no' Necesito respuesta RESTful en su acción de índice, simplemente renderice su respuesta xml directamente:

def index 
    render json: Client.all 
end 
+0

necesito una respuesta tranquila. ¡pero gracias de todas maneras! – Tronic

+1

@Tronic Quizás no te entendí correctamente. Pensé que tu acción 'index' no debería responder a html en absoluto y quieres que responda json incluso sin/js en tu url. – jdoe

+0

esta es una valiosa alternativa a la respuesta de @rogeilog para aquellos que no desean anular la respuesta predeterminada para TODOS sus controladores, sino solo para una determinada acción – mmcrae

4

Este patrón funciona bien si desea utilizar las mismas acciones de controlador para ambos. Cree una versión web como de costumbre, utilizando: html como formato predeterminado. Luego, coloque la API debajo de una ruta y configure: json como el valor predeterminado allí.

Rails.application.routes.draw do 

    resources :products 

    scope "/api", defaults: {format: :json} do 
    resources :products 
    end 

end 
Cuestiones relacionadas