2012-09-07 17 views
9

Sto provando a ottenere un'app rails in esecuzione con il framework node.js batman.js tramite la gemma batman-rails.Errore 406 quando si risponde con json

Quando sto rispondendo con JSON nel mio controller di rotaie, ottengo un errore 406 ogni volta, e non so perché. Ecco il mio controller:

respond_to :json 

    def index 
    respond_with Sample.all 
    end 

Questo mi dà un 406 non importa quale. Non penso che questo sia collegato a Batman, ma si rotaia. Ma per buona misura, ecco il mio codice di Batman:

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

E poi il mio file index.html.erb dice semplicemente 'indice', non è davvero facendo nulla con Batman ancora.

Ci sono un sacco di 406 domande relative a JSON, non sono stato in grado di applicarle ancora alla mia situazione. C'è qualcosa che sto sbagliando per rendere i rail respond_with JSON?

risposta

24

Va bene, ho fatto una semplice applicazione per controllare la situazione:

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 

Quando ho visitato /samples.json e samples/1.json, ha funzionato come previsto. Tuttavia, quando sono passato a /samples e /samples/1 (senza estensione .json), ho ricevuto un errore 406.

Al fine di avere il lavoro del URL senza l'estensione .json, è necessario modificare il file config/routes.rb come segue:

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

In caso contrario, l'applicazione Rails cercherà di rispondere alla richiesta con una risposta HTML .

+0

+1 grazie mille! –

+2

Voglio solo notare per le persone che vedono questo oggigiorno che l'adattatore per lo store di Batman's Rails ora aggiunge .json a tutte le richieste per impostazione predefinita. – Kombo

Problemi correlati