2013-02-26 22 views
6

Tôi đang sử dụng chế độ xem .json.erb thay vì gọi phương thức to_json.Làm thế nào để rút gọn đầu ra JSON trong Rails?

Tôi đã tìm thấy một số lời khuyên liên quan đến việc rút gọn đầu ra JSON. Những người khác khuyên bạn nên sử dụng after filter hoặc before render nhưng không giải thích cách thu hẹp khoảng trắng và tab giữa các phần tử JSON và vị trí lấy đầu vào JSON và vị trí đặt kết quả được rút gọn. Lời khuyên thứ ba nói rõ về việc rút gọn JavaScript.

Trả lời

4

Cách dễ nhất là chỉ để Ruby phân tích toàn bộ phản hồi và nhổ nó lại bằng cách sử dụng after_filter. Hãy thử mã sau đây trong app/controllers/application_controller.rb.

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 

Nếu bạn quyết định rằng bạn muốn JSON trang hoàng đẹp đẽ thay vì minified, bạn có thể sử dụng mã này:

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 

Hoặc, bạn có thể cho phép người yêu cầu phải xác định sử dụng một tham số:

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 
Các vấn đề liên quan