Mam problemy z odpowiadaniem z JSON na żądanie Json, mając włączone buforowanie akcji.Buforowanie działań w szynach i odpowiedzi json
Mam dość prosty kontroler, który odpowiada zarówno na JSON, jak i na buforowanie HTML działa dobrze dla odpowiedzi HTML, ale zauważyłem, kiedy zażądałem JSON i normalnie odpowiedziałbym JSON, ale z włączoną pamięcią podręczną akcji, opakował JSON wyjście w układzie!
Kiedy wyczyszczone cache, to daje mi błąd, że nie Domyślny układ istnieje:
ArgumentError w ClipsController Wskaźnik
nie było domyślny układ dla ClipsController w ...
Jak mogę zwrócić JSON dla akcji z pamięci podręcznej?
UPDATE, podejrzewam błąd o układ ma do czynienia z okazji I buforować czynności:
caches_action :index, :layout => false
Nie jestem pewien jednak, dlaczego wciąż potrzebują układ w przypadku odpowiedź JSON, ponieważ bez buforowania nie ma problemu.
tymczasowo Zmodyfikowałem filtr pamięci podręcznej, aby nie buforował żądań JSON, ale nie jest to idealne obejście. Co mam zrobić, jeśli chcę buforować JSON?
caches_action :index, :layout => false, :if => Proc.new { |c| !c.request.format.json? }
Interesujący problem! Spędziłem z tym trochę czasu i wygląda na to, że był to błąd, który został dodany w Railsach 3 ... Nie mogłem tego sprawić, żeby działał poprawnie, ale http://blog.blazingcloud.net/2010/11/21/caching-in-rails/wzmianki o umieszczeniu layoutu: false w twoim pliku before_filter, co może złagodzić twoje problemy. Przepraszam, nie mogłem pomóc więcej. – sgrif
Dziękuję. Twoje obejście zmywało moją aplikację Rails 3.2.8. Teraz buforuję żądania JS w przeglądarce, dodałem response.headers ["Cache-Control"] = "max-age = 600, must-revalidate" na kontrolerze i "cache: true" na żądanie Jquery.Ajax. –
Przypuszczam, że próbowałeś 'renderować json:' kiedy chcesz zwrócić JSON? – Raf