gpt4 book ai didi

html - 为什么 Rails 不显示我的 API 调用结果?

转载 作者:行者123 更新时间:2023-11-28 00:31:22 25 4
gpt4 key购买 nike

我对 ruby​​ on rails 完全陌生,我正在创建一个简单的文章搜索应用程序,它将使用 Guardian API 并仅显示新闻标题。我做了一个简单的 View 、 Controller 和一个调用外部 API 的类,但结果没有显示在我的页面上,我很困惑。它只需要这样工作:用户进入页面,填写搜索表单并查看新闻标题。我正在使用 httparty gem。

API 消费者类:

#app/clients/guardian_api_client.rb

class GuardianApiClient
include HTTParty

API_KEY = ENV['GUARDIAN_CONTENT_API_KEY']
BASE_URL ="https://content.guardianapis.com/search?"
API_PARTIAL_URL = "api-key=#{API_KEY}"


def query(q)
request = HTTParty.get(BASE_URL+"q=#{q}&""api-key=#{API_KEY}")
puts request
end

end

Controller :

class SearchController < ApplicationController
def search
@app = GuardianApiClient.new
@results = @app.query(params[:q])
end
end

查看:

<%= form_with(url: '/search') do |f| %>
<%= f.text_field :q %>
<%= f.submit 'search' %>
<% end %>

<% if @results != nil %>
<ul>
<%= @results.each do |r| %>
<li><%= r["webTitle"] %></li>
<% end %>
</ul>
<% else %>
<p>No results yet</p>
<% end %>

路线:

Rails.application.routes.draw do
get '/search' => 'search#search'
post '/search' => 'search#search'
end

最佳答案

在 API 客户端中,您使用 puts 打印结果:

  def query(q)
request = HTTParty.get(BASE_URL+"q=#{q}&""api-key=#{API_KEY}")
puts request
end

puts 返回 nil,因此 Controller 无法获取结果。您需要从您的 query 方法返回请求:

  def query(q)
request = HTTParty.get(BASE_URL+"q=#{q}&""api-key=#{API_KEY}")
puts request
request
end

(ruby 返回方法中最后一次调用的结果)。

关于html - 为什么 Rails 不显示我的 API 调用结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58837397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com