如何从API中提取某些信息并以Ruby中的列表形式返回?

如何从API中提取某些信息并以Ruby中的列表形式返回?,ruby,api,loops,Ruby,Api,Loops,我试图从API中提取散列中的“dba”值,并将其作为编号列表返回 这是我的3个独立文件/类。在'menu'方法中,我可以返回所有散列,但我只需要“dba”或“餐厅名称” 我知道我必须在某个地方放一个.each.with_index方法,但我似乎不明白 有什么想法吗 class OpenDataAPI def self.get_data response = HTTParty.get('https://data.cityofnewyork.us/resource/43nn-

我试图从API中提取散列中的“dba”值,并将其作为编号列表返回

这是我的3个独立文件/类。在'menu'方法中,我可以返回所有散列,但我只需要“dba”或“餐厅名称”

我知道我必须在某个地方放一个.each.with_index方法,但我似乎不明白

有什么想法吗

class OpenDataAPI
    def self.get_data
        response = HTTParty.get('https://data.cityofnewyork.us/resource/43nn-pn8j.json')
        response[0..24].each do |hash| 
            RestaurantInspections.new(hash)
        end
    end
end
class RestaurantInspection
属性读取器:餐厅名称、食物类型、违规行为、描述、等级
@@全部=[]
def初始化(api_哈希)
@餐厅名称=api\U哈希[“dba”]
@食品类型=api哈希[“烹饪描述”]
@违规描述=api哈希[“违规描述”]
@等级=api_哈希[“等级”]

@@所有您就快到了,只需将此方法更改为:

def menu
  input = nil
  while input != "exit"
    puts "Type 1 for a list of Restaurants, type Exit to exit the program"
    input = gets.strip.downcase
    case input
    when "1"
      RestaurantInspections.all.each.with_index do |restaurant, index|
        puts "#{index + 1}: #{restaurant.restaurant_name}"
      end
    when "exit"
      break
    else
      puts "Invalid entry - Please type either 1 or Exit"
    end
  end
end
class RestaurantInspections

    attr_reader :restaurant_name, :type_of_food, :violation_description, :grade

    @@all = []

    def initialize(api_hash)
        @restaurant_name = api_hash["dba"]
        @type_of_food = api_hash["cuisine_description"]
        @violation_description = api_hash["violation_description"]
        @grade = api_hash["grade"]
        @@all << self
    end

    def self.all
        @@all
    end

end
def menu
  input = nil
  while input != "exit"
    puts "Type 1 for a list of Restaurants, type Exit to exit the program"
    input = gets.strip.downcase
    case input
    when "1"
      RestaurantInspections.all.each.with_index do |restaurant, index|
        puts "#{index + 1}: #{restaurant.restaurant_name}"
      end
    when "exit"
      break
    else
      puts "Invalid entry - Please type either 1 or Exit"
    end
  end
end