在Rails中显示HTTP响应 - 未定义的方法`每个'为零:NilClass

时间:2017-07-23 21:22:40

标签: ruby-on-rails http ruby-on-rails-5 httparty

我正在使用HTTParty gem,Rails 5和" httplog"宝石。

我使用" httplog"跟踪我的HTTP请求。 gem和我收到了正确的JSON响应。因此,我认为我的问题正在我看来。我正在从模型中正确访问API。我根据HTTP日志在控制器中正确使用它。我只是在视线和控制器之间的某处徘徊。

我得到了一个"未定义的方法`每个' for nil:访问API时出现NilClass" 错误。

以下是API的示例回复:

{
    "result_count": 8132,
    "page_size": 250,
    "current_page": 1,
    "total_pages": 33,
    "api_call_credits": 1,
    "data": [
        {
            "ticker": "A",
            "name": "Agilent Technologies Inc",
            "lei": "QUIX8Y7A2WP0XRMW7G29",
            "cik": "0001090872",
            "latest_filing_date": "2017-02-06"
        }

这是我的模特:

class Finance < ApplicationRecord
  include HTTParty

  def self.response
    auth = {
    username: "username",
    password: "password"
    }
    options = { basic_auth: auth }
    data_url = "https://api.intrinio.com/companies?ticker=AAPL"
    HTTParty.get(data_url, options)
    end
end

我的控制器:

class FinancesController < ApplicationController
  def index
    @response = Finance.response
  end
end

我的观点:

&#13;
&#13;
<% @response["data"].each do |data| %>
    <p><%= data["name"]%></p>
    <p><%= data["ticker"]%></p>
<% end %>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

我从来没有使用过HTTP派对,但是我没有看到你回归的任何地方&#34;响应的主体,通常你需要像

这样的东西
response = HTTParty.get(data_url, options)
response.body # being this the actual json response

如果有效,你可以直接这个

HTTParty.get(data_url, options).body

答案 1 :(得分:0)

尝试使用parsed_response HTTParty::Response 方法(这是您的请求的回复)。 HTTParty.get(url, data).parsed_response