Я следую этому руководству , чтобы подключиться к GitHub API. Я могу успешно подключиться и вернуть информацию о прошедшем аутентификацию пользователя.
Однако я пытаюсь вернуть репозитории пользователя, ответом является массив объектов.
Я не знаю, как передать это в представление. Из учебника, которому я следую, взгляните на recipe.rb
класс здесь .
attr_accessor :ingrediets
будет функционировать как массив (строка 8). В строке 32 она передает ответ от API пользовательскому методу, чтобы проанализировать его, создать объект Ingredient
и вставить его в массив. self.ingredients = parse_ingredients(args)
Это пользовательский метод
def parse_ingredients(args = {})
args.fetch("extendedIngredients", []).map { |ingredient| Ingredient.new(ingredient) }
end
Как видите, из объекта args
она извлекает свойство extendedIngredients
в ответе и создает массив.
Моя проблема в том, что с API GitHub ответом является простой массив, и моя попытка разобрать его и превратить в массив объектов оказалась безуспешной.
Это мой repos.rb
класс
module Github
class Repos < Base
attr_accessor :repos
def initialize(args = [])
self.repos = parse_repos(args)
end
def self.list
response = Request.get("user/repos")
Repos.new(response)
end
private
def parse_repos(args = [])
args.map { |repo| Repo.new(repo) }
end
end
end
И мой repo.rb
класс
module Github
class Repo < Base
attr_accessor :name,:full_name,:description
end
end
Если вы заметили, что я придерживаюсь стиля урока, но я не смог его реализовать.
В моей текущей реализации это ошибка, которую я получаю, на мой взгляд
undefined method `each' for #<Github::Repos:0x00007feaadd494d8>
<% @repos.each do |repo|%>
<%= repo %>
<% end %>