Ruby 在我的CLI中使用以显示从API接收的信息时遇到问题
我正在创建一个CLI,我的基本功能正常工作,但是在我的第二层,当它应该显示从API中提取的对象的信息时,我得到了一个变量/方法错误,我想知道这是否是因为一旦选择了对象,就没有pokemon密钥显示在pokemon的内部杂烩 下面是错误,然后是API文件,后面是有问题的方法/变量Ruby 在我的CLI中使用以显示从API接收的信息时遇到问题,ruby,command-line-interface,Ruby,Command Line Interface,我正在创建一个CLI,我的基本功能正常工作,但是在我的第二层,当它应该显示从API中提取的对象的信息时,我得到了一个变量/方法错误,我想知道这是否是因为一旦选择了对象,就没有pokemon密钥显示在pokemon的内部杂烩 下面是错误,然后是API文件,后面是有问题的方法/变量 PokeDEX CLI/lib/PokeDEX_CLI/CLI.rb:47:在'sub_menu_input'中:未定义的局部变量或#的'pokemon'方法(NameError) 你是说?列表\口袋妖怪 BAS
PokeDEX CLI/lib/PokeDEX_CLI/CLI.rb:47:在'sub_menu_input'中:未定义的局部变量或#的'pokemon'方法(NameError)
你是说?列表\口袋妖怪
BASE_URL = "https://pokeapi.co"
def self.get_all_pokemon(page=nil)
if page
response = RestClient.get(page)
else
response = RestClient.get("https://pokeapi.co/api/v2/pokemon?limit=151")
end
pokemon_array = JSON.parse(response.body)["results"]
#binding.pry
pokemon_array.each do |pokemon|
PokeDEXCLI::Pokemon.new(pokemon)
end
end
end
def sub_menu_input
user_input = gets.strip
if user_input.to_i.between?(1, PokeDEXCLI::Pokemon.all.length)
character = PokeDEXCLI::Pokemon.all[user_input.to_i - 1]
print_pokemon_details(pokemon)
continue?
elsif user_input.downcase == "exit"
goodbye
else
invalid_choice
sub_menu_options
end
end
def print_pokemon_details(pokemon)
puts "Name: #{pokemon.name}"
puts "Number: #{pokemon.id}"
puts "Types: #{pokemon.types}"
end
错误在这里:
character = PokeDEXCLI::Pokemon.all[user_input.to_i - 1]
print_pokemon_details(pokemon)
# ^^^^^^^ pokemon not defined
你可能是说:
pokemon = PokeDEXCLI::Pokemon.all[user_input.to_i - 1]
^^^^^^^
print_pokemon_details(pokemon)
在
sub\u menu\u input
中没有名为pokemon
的东西。但是我不是在用它需要的参数调用我的方法,所以它不应该接受它吗?我不知道你刚才说了什么。在子菜单输入
中没有名为口袋妖怪
的变量<代码>子菜单输入不接受任何参数。不清楚你认为它应该从哪里“接受”它;在你发布的代码中只有一个pokemon
引用,它是pokemon\u数组的本地引用。每个块。是的,这是我在重新阅读sub\u菜单时看到的,并查看它为什么没有定义