为什么 rails 没有显示我的 API 通话结果?
Why is rails not showing my API call results?
我在 rails 上对 ruby 完全陌生,我正在创建一个简单的文章搜索应用程序,它将使用 Guardian API 并仅显示新闻标题。
我做了一个简单的视图、控制器和一个调用外部 API 的 class,但结果没有显示在我的页面上,我很困惑。它只需要这样工作:用户进入页面,填写搜索表单并查看新闻标题。我正在使用 httparty gem.
API消费者class:
#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
控制器:
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
returns nil
,所以控制器得不到结果。您需要 return 从您的 query
方法请求:
def query(q)
request = HTTParty.get(BASE_URL+"q=#{q}&""api-key=#{API_KEY}")
puts request
request
end
(ruby return是方法中最后一次调用的结果).
我在 rails 上对 ruby 完全陌生,我正在创建一个简单的文章搜索应用程序,它将使用 Guardian API 并仅显示新闻标题。 我做了一个简单的视图、控制器和一个调用外部 API 的 class,但结果没有显示在我的页面上,我很困惑。它只需要这样工作:用户进入页面,填写搜索表单并查看新闻标题。我正在使用 httparty gem.
API消费者class:
#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
控制器:
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
returns nil
,所以控制器得不到结果。您需要 return 从您的 query
方法请求:
def query(q)
request = HTTParty.get(BASE_URL+"q=#{q}&""api-key=#{API_KEY}")
puts request
request
end
(ruby return是方法中最后一次调用的结果).