Я использую гем HTTParty в Rails, чтобы сделать вызов API, и он был успешным. Я не получаю никаких ошибок, однако после определения переменных в моем контроллере я не могу заставить свои циклы что-либо производить.
Если я наберу ‹%= @variable %>, он покажет только тот объект Active Record, который я ожидал. Если я сделаю то же самое, но включу variable.name, он предоставит строку, но не совсем то, на что я надеялся. Я просмотрел несколько руководств по HTTParty и провел много исследований API, но, похоже, не могу понять это. Я пытаюсь получить список закусок из внешнего API. Вот что у меня есть (некоторые вещи, на мой взгляд, просто для проверки).
Вызов API (выношу в отдельную папку services):
class SnackAPI
include HTTParty
base_uri 'https://api-snacks.nerderylabs.com/v1/'
SNACK_ACCESS = "/snacks?ApiKey=#{ENV['SNACK_API_KEY']}"
def get_snacks
response = self.class.get(SNACK_ACCESS)
JSON.parse(response.body)
end
end
Первый раз публикую фрагменты кода, поэтому не знаю, как публиковать с правильным отступом, но в моем приложении это правильно.
Контроллер:
class SnacksController < ApplicationController
def index
@snacks = Snack.all
@permanent_snacks = Snack.where(optional: false)
@optional_snacks = Snack.where(optional: true)
end
end
Модель:
class Snack < ApplicationRecord
validates :name, presence: true
validates_uniqueness_of :name
end
Просмотр (index.html.erb) в папке закусок:
<h1> Welcome to SnaFoo! </h1>
<!-- I am attempting to get these loops to display each snack item included in the API but nothing appears -->
<% @permanent_snacks.each do |snack| %>
<%= snack.name %>
<% end %>
<% @optional_snacks.each do |snack| %>
<%= snack.name %>
<% end %>
<%= @snacks %>
<%= @optional_snacks %>
<%= @permanent_snacks %>
<br />
Snack with name paramater (to test):
<%= @snacks.name %>
<!-- So it recognizes the fields and datatypes -->
Результаты в представлении: сами объекты (для каждого. Я ожидал этого, это было просто для проверки того, что API извлекает информацию) Для ‹%= @snacks.name %> он выводит Snack, поэтому он, по крайней мере, распознает мои поля и типы данных в моей схеме. Основная проблема заключается в том, чтобы заставить циклы работать и отображать каждую закуску в API.
Я часами пытался решить эту проблему самостоятельно, но я в отчаянии и был бы признателен за любую помощь, которая могла бы указать мне правильное направление.
Если схема необходима/полезна, чтобы помочь решить эту проблему, я тоже могу опубликовать ее.
Вывод терминала, когда я загружаю страницу (обычно код для Ubuntu, но я кодирую это для Windows из-за некоторых проблем с моим разделом:
Начат GET "/" для 10.0.2.2 в 2017-09-11 21:49:49 +0000 Невозможно отобразить консоль из 10.0.2.2! Разрешенные сети: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 Обработка SnacksController#index как HTML Отрисовка закусок/index.html.erb в макетах/приложениях Загрузка закусок (0,3 мс) SELECT "snacks".* FROM "закуски" ГДЕ "закуски"."необязательный" = $1 [["необязательный", "f"]] Загрузка закуски (0,5 мс) ВЫБЕРИТЕ "закуски".* ИЗ "закуски" ГДЕ "закуски"."необязательный" = $1 [["необязательный", "t"]] Отрендеренные закуски/index.html.erb в макетах/приложении (3,5 мс) Завершено 200 OK за 401 мс (Просмотры: 374,1 мс | ActiveRecord: 0,8 мс)