使用Sinatra执行Ruby代码的详细信息

时间:2017-09-28 23:01:42

标签: html ruby sinatra erb

我有一个Ruby脚本:

require 'uri'
require 'net/http'
require 'openssl'
require 'json'
require 'pp'
require 'opal'
require 'ostruct'


url = URI("MY URI")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'
request["authorization"] = 'MY AUTH'
request["cache-control"] = 'no-cache'

response = http.request(request)

result = JSON.parse(response.body)

if response.code == "200"

    result.each do |doc|
    #      puts doc
           print doc ["id"]
           print " "
           print doc ["is_completed"]
           print " "
           print doc ["name"]
           print "\n"
    end
else
        puts "error"
end

这是正常的。

我所做的是:

1)安装了Sinatra

2)我能够运行一个ruby文件并看到localhost显示的内容。

我需要做什么

  • 在localhost html页面上显示上述脚本(我正在解析的一些api数据)的结果。

如上所述,我拥有Sinatra的宝石,只是在做一个简单的“#hello world"确实在localhost网站上显示。我正在寻找的主要内容是我可以做些什么来在网站上显示上述脚本的结果。

提前致谢。

更新:我按如下方式设置了我的代码,

require 'sinatra' 

get '/' go 
code = "<%= MY ENTIRE CODE I POSTED ABOVE %>" 
erb code 
end

当我转到localhost时,我收到API调用的完整响应,该响应位于&#34;结果&#34;变量。 &#34;打印&#34;语句仍然显示在执行脚本的终端上。

现在的问题是,如何将特定数据发送到网页。比如在&#34; print&#34;声明。谢谢。希望很清楚。

1 个答案:

答案 0 :(得分:0)

我能够找到答案,现在我的工作正是我需要的。

最终守则:

require 'sinatra'

get '/' do

require 'uri'
require 'net/http'
require 'openssl'
require 'json'
require 'pp'
require 'opal'
require 'ostruct'

url = URI('MY URI FOR DATA')

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request['content-type'] = 'application/json'
request['authorization'] = 'MY AUTH INFO'
request['cache-control'] = 'no-cache'
request['postman-token'] = 'b1dfa857-69f3-dc2e-3c23-ae60632891cb'

response = http.request(request)

jhash = JSON.parse(response.body)
output = ''

jhash.each do |doc|
   title_tag = doc ["id"]
   info_item = doc ["name"]
   output << "<TR><td>#{title_tag}</td><td>#{info_item}</td></tr>"
end

  erb :index, :locals => {results: output}

end

index.erb文件只包含:

<table>
  <th>The Weather in Buffalo, NY, USA</th>
  <tr>
    <td><%= results %></td>
  </tr>
</table>

结果现在正是我想要的。谢谢你的回复。