Дисплей отформатирован JSON в HTML без JavaScript (Ruby, Sinatra) - PullRequest
0 голосов
/ 26 мая 2020

Я создаю практический веб-API с помощью Ruby + Sinatra и хочу, чтобы мои ответы отображались в шаблоне ERB с форматированием JSON (Geo JSON). Пока мне удалось правильно обработать запрос и отформатировать ответ.

Однако я не могу найти способ отобразить содержимое в конечной точке как строку JSON, и она отображается как обычная строка (трудно читать для JSON). Есть ли способ сделать это в Ruby + Sinatra без использования JavaScript?

Вот что у меня есть в обоих файлах.

# app.rb

before do
    json = File.open("data/cities.json").read
    data = JSON.parse(json)
    data.each do |item|
        geoarray["features"].append(json_to_geojson(item))
    end
    @geojson = geoarray.to_json
end

...

get('/myendpoint') do
    @activities = @geojson
    erb :cities
end
<!--cities.erb-->

<%= @activities %>

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Вы можете сделать строку JSON красивее, используя метод JSON.pretty_generate().

# app.rb
before do
    json = File.open("data/cities.json").read
    data = JSON.parse(json)
    data.each do |item|
        geoarray["features"].append(json_to_geojson(item))
    end

    # use pretty_generate instead of to_json 
    @geojson = JSON.pretty_generate(geoarray)
end

И в вашем файле erb. Вместо простого отображения добавьте к нему тег <pre>.

<!--cities.erb-->

<%= @activities %>

ссылка

0 голосов
/ 26 мая 2020

попробовать <%= @activities.to_json.html_safe %>

...