我是一个新手,但很喜欢它......无论如何,我遇到了一个问题而且似乎无法找到我正在寻找的东西,因为大多数已经问到的东西都是ActiveRecord对象,等等,我实际上正在使用来自其他Web服务的JSON.parse。
我不能在没有错误的情况下遍历对象或在我的表中(在视图中)显示空白行。我知道我在视图代码中的内容是错误的,但我尝试了很多不同的东西我已经阅读
我应该在视图中做什么,或者在发送到视图之前是否需要转换为其他数据类型?你能给予任何帮助,我真的很感激。
由于
控制器代码:
class WidgetController < ApplicationController
def index
widget = Widget.new
@widgets = widget.fetchAll
end
end
型号代码:
class Widget < ActiveRecord::Base
# class Widget
require 'net/http'
require 'json'
def fetchAll
uri = URI.parse("https://example.com/widgets")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
return JSON.parse(response.body)
end
end
查看代码:
<% @widgets.each do |widget| -%>
<tr>
<td><%= puts "#{widget['id']}" %></td>
<td><%= widget[:name] %></td>
<td><%= widget.description %></td>
</tr>
<% end -%>
答案 0 :(得分:0)
该网址"https://example.com/widgets"
返回包含错误的响应。在rails中,响应对象如下所示:
#<Net::HTTPNotFound 404 Not Found readbody=true>
如果仔细观察,可以看到404 Not Found
错误。您可以输出响应对象,如下所示:
...
...
response = http.request(request)
puts "*" * 20
p response
puts "-" * 20
然后查看启动服务器的窗口:
...
...
Started GET "/users/index" for 127.0.0.1 at 2017-02-18 20:57:16 -0700
Processing by UsersController#index as HTML
********************
#<Net::HTTPNotFound 404 Not Found readbody=true>
--------------------
...
...
或者,您可以使用可能更友好的输出,例如命令行上的curl command
:
~$ curl -v "https://example.com/widgets"
* Trying 93.184.216.34...
* Connected to example.com (93.184.216.34) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
* Server certificate: www.example.org
* Server certificate: DigiCert SHA2 High Assurance Server CA
* Server certificate: DigiCert High Assurance EV Root CA
> GET /widgets HTTP/1.1
> Host: example.com
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Cache-Control: max-age=604800
< Content-Type: text/html
< Date: Sun, 19 Feb 2017 03:59:57 GMT
< Expires: Sun, 26 Feb 2017 03:59:57 GMT
< Last-Modified: Mon, 13 Feb 2017
...
...
(-v
代表详细,它输出带有请求的已发送标头以及带响应的接收标头。如果没有-v选项,输出中将省略标题。)
面向>
的右侧是请求的文本。左侧<
是响应的文本。请注意响应第一行中的404 Not Found状态。