2012-05-03 13 views
5

Sto usando Jbuilder (e ho anche provato a usare Rabl) per rendere json. Quando provo a rendere il modello di JBuilder nella mia applicazione rende il modello all'interno del/ file dell'applicazione layout e restituisce HTML come JSON (vedi linea 'nel layout/applicazione'):HAML impedisce ai motori di template di eseguire rendering diversi dall'HTML

Rides controller on Github

Started GET "/random_photo.json" 
Processing by RidesController#random_photo as JSON 
>> Rendered rides/random_photo.json.jbuilder within layouts/application (0.3ms) 
    Rendered shared/_banners_in_corners.haml (3.0ms) 
    Rendered shared/_sign_in_and_out.haml (2.0ms) 
    Rendered layouts/_navigation.haml (7.3ms) 
Completed 200 OK in 156ms (Views: 120.7ms | ActiveRecord: 3.1ms) 

Tuttavia, quando eseguo il rendering di JSON senza un modello e faccio una chiamata render json: @ride.as_json, le cose funzionano come previsto. Quando creo una nuova applicazione e cerco di fare la stessa cosa, tutto funziona come previsto, così:

Started GET "/posts/1.json" 
Processing by PostsController#show as JSON 
    Post Load (0.1ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" = ? LIMIT 1 [["id", "1"]] 
    Rendered posts/show.json.jbuilder (0.6ms) 
Completed 200 OK in 20ms (Views: 19.2ms | ActiveRecord: 0.1ms) 

Non so quello che ho fatto con la mia domanda che non viene eseguito il rendering dei modelli correttamente. Qualche idea?

risposta

20

Accidenti, mi ci sono voluti circa due giorni per scoprire che il problema che causa questo problema è il mio layout/file di applicazione che è stato chiamato aplication.haml.

Ora, quando ho voluto usare un motore di template come Builder per XML o Rabl per JSON, si è cercato di rendere il modello all'interno del campo di rendimento nel file layouts/application.haml e tornando così HTML come JSON

ho scoperto che il problema si trova all'interno del file di application.haml

chiamandolo application.html.haml risolto il problema ...

+0

Wow ho avuto lo stesso problema! Stavo cercando di implementare Jbuilder senza fortuna, passando a RABL e stavo facendo lo stesso programma. Rinominare application.haml in application.html.haml ha fatto il trucco! Grazie. – brent

+0

Venerato. Questo ha risolto il mio problema e ho impiegato ore per trovare questo post. – robbie613

+0

Venerato. Questo ha risolto il mio problema e ho impiegato ore per trovare questo post. – robbie613