【问题标题】:Display formatted JSON in HTML without JavaScript (Ruby, Sinatra)在没有 JavaScript 的 HTML 中显示格式化的 JSON(Ruby、Sinatra)
【发布时间】:2020-09-13 00:58:12
【问题描述】:

我正在使用 Ruby + Sinatra 构建一个练习 Web API,我希望我的响应显示在带有格式化 JSON (GeoJSON) 的 ERB 模板中。到目前为止,我已经能够正确处理请求并格式化响应。

但是,我找不到将端点中的内容显示为 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 %>

【问题讨论】:

    标签: json ruby sinatra geojson


    【解决方案1】:

    试试&lt;%= @activities.to_json.html_safe %&gt;

    【讨论】:

    • 不,似乎不起作用。 html_safe 是否适用于 Sinatra 或 Rails?
    【解决方案2】:

    您可以使用JSON.pretty_generate() 方法使 JSON 字符串看起来更漂亮。

    # 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 文件中。与其简单展示,不如给它添加&lt;pre&gt;标签。

    <!--cities.erb-->
    
    <pre><%= @activities %></pre>
    
    

    reference

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多