2012-09-07 11 views
9

Estoy tratando de ejecutar una aplicación de rieles con el framework node.js batman.js a través de la gema batman-rails.error 406 al responder con json

Cuando estoy respondiendo con json en mi controlador de rieles, me sale un error 406 cada vez, y no sé por qué. Aquí está mi controlador:

respond_to :json 

    def index 
    respond_with Sample.all 
    end 

Esto me da un 406 pase lo que pase. No creo que esto esté relacionado con Batman, sino que se usa solo. Pero por si acaso, aquí está mi código batman:

index: (params) -> 
    TopNavTemplate.Sample.load (err) -> throw err if err 
    @set 'samples', TopNavTemplate.Sample.get('all') 

Y entonces mi archivo index.html.erb simplemente dice 'índice', que no está haciendo nada con Batman todavía.

Hay un montón de preguntas relacionadas con 406 JSON, realmente no he podido aplicarlas todavía a mi situación. ¿Hay algo que estoy haciendo mal para que los rieles respondan con JSON?

Respuesta

24

Muy bien, he hecho una aplicación muy sencilla de revisar su situación:

SamplesController.rb

class SamplesController < ApplicationController 
    respond_to :json 

    def show 
    respond_with Sample.find(params[:id]) 
    end 

    def index 
    respond_with Sample.all 
    end 
end 

Cuando visité /samples.json y samples/1.json, funcionó como estaba previsto. Sin embargo, cuando fui a /samples y /samples/1 (sin extensión .json), recibí un error 406.

el fin de tener el trabajo de la URL sin la extensión .json, es necesario modificar el archivo config/routes.rb de la siguiente manera:

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

De lo contrario, la aplicación Rails intentará responder a la solicitud con una respuesta HTML .

+0

+1 muchas gracias! –

+2

Solo quiero señalar a las personas que lo ven hoy en día que el adaptador de tienda Batman's Rails ahora agrega .json a todas las solicitudes de forma predeterminada. – Kombo

Cuestiones relacionadas