Как мне взаимодействовать с внешним поисковым API в Rails5, используя гем HTTParty? - PullRequest
0 голосов
/ 22 января 2019

Как я могу создать приложение в Rails, которое позволит мне вводить параметры поиска, которые затем передаются во внешний API для выполнения поиска, а затем отображать эти результаты в моем приложении.Я пытаюсь использовать HTTParty для достижения этой цели, но я немного растерялся.Я попытался создать метод класса в app / services и получить к нему доступ в моем контроллере, а затем вызвать переменную экземпляра в моем представлении.На данный момент выдает ошибку маршрутизации uninitialized constant ResultsController::Api.Был бы очень признателен за некоторую помощь.

services / 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

1 Ответ

0 голосов
/ 22 января 2019

Вы почти правы, просто нужно внести некоторые изменения здесь.Сначала переименуйте Api.rb в api.rb - по договоренности все файлы должны быть названы в нижнем регистре snake

class Api
  include HTTParty
  base_uri "http://search.spoonflower.com/searchv2"

  def find(name)
    self.class.get("/designs", query: { q: name }).parsed_response
  end
end

class ResultsController < ApplicationController    
  def index
    # here you get some json structure that you can display in the view
    @results = Api.new.find('test')['results']
  end
end
...