如何从API中提取某些信息并以Ruby中的列表形式返回?
我试图从API中提取散列中的“dba”值,并将其作为编号列表返回 这是我的3个独立文件/类。在'menu'方法中,我可以返回所有散列,但我只需要“dba”或“餐厅名称” 我知道我必须在某个地方放一个.each.with_index方法,但我似乎不明白 有什么想法吗如何从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-
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