2013-02-26 11 views
6

to_json yöntemini çağırmak yerine .json.erb görünümleri kullanıyorum.Raylarda JSON çıkışı nasıl minimize edilir?

JSON çıktı minifikasyonu ile ilgili birkaç tavsiye buldum. Ones, web uygulamasının tüm çıktılarını sıkıştırdığını söylüyor, diğerleri after filter veya before render'u kullanmayı önermektedir, ancak JSON öğeleri arasındaki boşlukları ve sekmeleri nasıl bastıracaklarını ve JSON girişini nereden alacağınızı ve nerede minified sonucu koyacağını açıklamıyorlar. Üçüncü tavsiyeler, JavaScript'i küçültme hakkında kesinlikle bilgi vermektedir.

cevap

4

En kolay yol, Ruby'nin tüm yanıtı ayrıştırması ve bir after_filter kullanarak tekrar geri göndermesidir. Aşağıdaki kodu app/controllers/application_controller.rb'da deneyin.

class ApplicationController < ActionController::Base 
    after_filter :format_json 

    private 

    def format_json 
    if request.format.json? 
     json = JSON.parse(response.body) 
     response.body = params[:pretty] ? JSON.pretty_generate(json) : json.to_json 
    end 
    end 
end 
: Eğer istekte bir parametre kullanarak belirtmek için izin verebilir,

class ApplicationController < ActionController::Base 
    after_filter :beautify_json 

    private 

    def beautify_json 
    response.body = JSON.pretty_generate(JSON.parse(response.body)) if request.format.json? 
    end 
end 

Veya: Eğer yerine minified ait beautified JSON istemediğinize karar verirseniz

class ApplicationController < ActionController::Base 
    after_filter :minify_json 

    private 

    def minify_json 
    response.body = JSON.parse(response.body).to_json if request.format.json? 
    end 
end 

, bu kodu kullanabilirsiniz