【发布时间】:2019-01-22 13:23:44
【问题描述】:
如何在 Rails 中创建一个应用程序,让我输入搜索参数,然后将这些参数传递给外部 API 以执行搜索,然后在我的应用程序中显示这些结果。我正在尝试使用 HTTParty 来实现这一点,但我有点迷茫。我尝试在 app/services 中创建一个类方法并在我的控制器中访问它,然后在我的视图中调用实例变量。目前它正在引发路由错误uninitialized constant ResultsController::Api。非常感谢您的帮助。
服务/Api.rb
class Api
include HTTParty
base_uri "search.example.com"
attr_accessor :name
def initialize(name)
self.name = name
end
def self.find(name)
response = get("/results&q=#{name}")
self.new(response["name"])
end
results_controller.rb
class ResultsController < ApplicationController
include Api
def index
@results = Api.find('test')
end
end
路线:
Rails.application.routes.draw do
resources :results
root 'results#index'
end
【问题讨论】:
-
ResultsController中声明include Api的目的是什么? -
是的,我现在看其实没必要
-
您的错误实际上在哪里。
Api不是包含它的模块,它需要在app/services/api.rb下(请记住,Ruby 文件的命名约定使用小写下划线名称)以便 Rails 可以自动加载它。
标签: ruby-on-rails ruby api httparty