如何在Ruby上解决未定义的方法“ []”?

诺贝托·圣地亚哥(Norberto Santiago)

我正在尝试为if放置错误数据的用户声明。

这是我的代码:

class Breweries::CLI

  def start 
    puts "Hello!"
    puts "---------------------------"
    puts "Please enter your location:"
    input = gets.strip.downcase
    @data = Breweries::API.get_breweries(input)
    @objects = Breweries::HoppyCode.all 
    if input.length < 1 
      puts "Sorry!!" 
      puts "```````"
      start
    else 
      display_info 
    end
  end 

  def display_info 
    puts "You'll love the following spots!"
    puts "********************************"
    @objects.each.with_index(1) {|brewery, index| puts "#{index}. #{brewery.name}"}  
    puts  "Please make a selection by index number for more information:"
    input = gets.strip.downcase
    if(input.to_i > 0)
      @brewery = @objects[input.to_i - 1]
      puts "name: #{@brewery.name}"
      puts "street: #{@brewery.street}"
      puts "city: #{@brewery.city}"
      puts "phone: #{@brewery.phone}"
      puts "website_url: #{@brewery.website_url}"
      display_info
    elsif (input == "quit")
      quit 
    elsif (input == "menu")
      start
    end
  end

  def quit 
    puts "Goodbye. Drink responsibly and enjoy." 
  end   

end

当我放置会产生错误的内容时,它返回以下内容:

Please enter your location: nvifpejvf80ejvip
 Traceback (most recent call last):
 2: from bin/breweriesCLI:6:in `<main>'
 1: from /home/munificent-format-5297/Development/breweries/lib/breweries/cli.rb:8:in `start' /home/munificent-format-5297/Development/breweries/lib/breweries/api.rb:6:in `get_breweries': undefined method `[]' for nil:NilClass (NoMethodError)

如何解决未定义方法'[]'的错误?如果有必要,这里是API代码。

class Breweries::API

  def self.get_breweries(input)
    @breweries_hash = HTTParty.get("https://api.openbrewerydb.org/breweries?by_city=#{input}")
    breweries_obj = {
      name: @breweries_hash[1]["name"],
      street: @breweries_hash[3]["street"],
      city: @breweries_hash[4]["city"],
      phone: @breweries_hash[10]["phone"],
      website_url: @breweries_hash[11]["website_url"]
    }
    Breweries::HoppyCode.new(breweries_obj)
  end 

end 
阿列克谢·马蒂什金(Alexei Matiushkin)

当输入无效时,调用

@breweries_hash = HTTParty.get("...")

返回的不是您期望的对象(我建议它返回一个空哈希。)这使得无法获得以下各行的详细信息。根据您如何处理它,您可能会决定例如从此函数或早返回raise,或执行其他操作。

要解决此问题,请从调试问题开始,如下所示:

@breweries_hash = HTTParty.get("...")
puts @breweries_hash.inspect
...

这样,您将看到返回的内容并获得如何处理它的想法。

如果我是对的,并且返回的是一个空哈希,那么您可能希望尽早从此函数返回。

@breweries_hash = HTTParty.get("...")
return if @breweries_hash.empty?
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何为1:Fixnum错误解决未定义的方法“ model_name”(ruby on rails)

未定义的方法Ruby

如何解决 Laravel 中未定义的方法 links()?

如何解决未定义的方法错误

如何解决“对象未定义”

如何解决“模块未定义”。

如何解决未定义的路由

Ruby类方法的“未定义方法”

Ruby on Rails,未定义的方法合并

Ruby on Rails,方法未定义

每个Ruby的未定义方法

nil:NilClass的未定义方法“ +”-Ruby

Ruby:未定义的方法“ assert”

ruby - NoMethodError:未定义的方法“状态”

Ruby on rails 未定义方法`firstname'

Ruby:nil:NilClass的未定义方法`[] ='

Ruby的nil:NilClass未定义方法`+'

Ruby 未定义方法`to_sentence'

如何在生产构建后解决 Angular 给定的错误(未定义订阅)?

如何在Chai中解决“无法读取未定义的属性'应该'”?

方法内部的属性显示未定义但在方法之外工作。如何解决?

如何解决“无法读取未定义的属性'定义'”?

如何解决数据库关联的“未定义方法belogns_to”?

如何解决“List<Map.Entry<String,String>>类型的values()方法未定义”

如何解决“的方法,错配(INT [],INT [])是未定义的类型阵列”

如何解决未定义的局部变量或方法错误

如何使用simple_form解决未定义的方法“ to_key”错误

如何解决未捕获的错误:调用未定义的方法stdClass :: query()

未定义的<type float32没有字段或方法之和>错误。如何解决?