2012-05-03 11 views
5

Używam JBolder (a także próbowałem użyć Rabl) do renderowania json. Kiedy próbuję renderować szablon JBUILDER w mojej aplikacji renderuje szablon w układy/aplikacji pliku i zwraca HTML jako JSON (patrz linia 'w układy/application'):HAML uniemożliwia renderowanie szablonów do niczego innego niż 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) 

Jednak, gdy renderuję json bez szablonu i wykonuję wywołanie render json: @ride.as_json, wszystko działa zgodnie z oczekiwaniami. Kiedy tworzę nową aplikację i staram się robić to samo, wszystko działa zgodnie z oczekiwaniami, a także:

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) 

Nie wiem, co mam zrobić z moim wniosku, że nie jest renderowanie szablony prawidłowo. Jakieś pomysły?

Odpowiedz

20

Ojej, zajęło mi około dwóch dni odkrycie, że przyczyną problemu jest mój układ/plik aplikacji o nazwie aplication.haml.

Teraz, gdy chciałem użyć silnika szablonu jak Builder XML lub Rabl dla JSON, to starał się uczynić szablon w zakresie dochodowości w pliku layouts/application.haml i powracając tym samym HTML jako JSON

I okazało się, że problem leży w pliku

nazywania go application.html.haml rozwiązał problem application.haml ...

+0

Wow miałem ten sam problem! Próbowałem wdrożyć Jbuilder bez powodzenia, przerzuciłem się na RABL i miałem ten sam program. Zmiana nazwy application.haml na application.html.haml rozwiązała problem! Dzięki. – brent

+0

Rewizja. To rozwiązało mój problem, a znalezienie tego postu zajęło mi wiele godzin. – robbie613

+0

Rewizja. To rozwiązało mój problem, a znalezienie tego postu zajęło mi wiele godzin. – robbie613

Powiązane problemy