在视图中显示来自 HTTparty 的 GET 请求



我目前有一个名为example.rb的简单红宝石文件。如何制作一个视图,允许用户将信息提交到表单中,然后将 GET 请求中的信息返回给他们?我了解如何从控制台使用这些请求,但不是从前端使用这些请求。

关于这一主题的资源也将不胜感激。

require 'rubygems'
require 'httparty'
class StackExchange
include HTTParty
base_uri 'api.stackexchange.com'
def initialize(service, page)
@options = {query: {site: service}}
end
def questions
self.class.get('/2.2/questions', @options)
end
def users
self.class.get('/2.2/users', @options)
end
end
stack_exchange = StackExchange.new('stackoverflow',1)
puts stack_exchange.users

确保 HTTParty gem 位于应用程序的Gemfile中。

example.rb把它放在/app/models/stack_exchange.rb里——是的,文件名确实很重要[0](这不是纯粹主义者放置它的地方,但对于初学者来说,这很好,完全可以接受)。删除底部用于测试它的代码。

routes.rb中添加此路由:get '/test' => 'application#test'

在您的application_controller.rb中添加此方法:

def test
stack_client = StackExchange.new('stackoverflow', 1)
@users = stack_client.users
end

app/views/application/test.html.erb放以下内容:

<% @users.each do |user| %><%=user.inspect%><br/><br/><% end %>

注意:否则我建议将视图添加到ApplicationController但由于我对应用程序一无所知,因此我将默认使用它。

点击 http://localhost:3000/test,您应该会看到预期的结果。

[0] Rails在幕下做了很多"魔术"——它真的不是魔术,而是元编程——它试图假设很多关于你的应用程序结构和命名约定的东西。如果你的类被命名为Stackexchange(注意小写e),stackexchange.rb将自动"映射"到类Stackexchange。更多信息: http://guides.rubyonrails.org/autoloading_and_reloading_constants.html

最新更新