我正在try 找到一种方法来编写用户的图形用户界面,他们刚刚点击的按钮中没有任何东西

我试过像``这样的方法

if @album[@user_choice_album].tracks[10].name == nil
                return 

` 但它中断了程序,并给出了一条消息,而我预计它会中断程序并进入下一个程序.

test.rb:192:in `draw_now_playing': undefined method `name' for nil:NilClass (NoMethodError)

            if (!(@album[@user_choice_album].tracks[10].name))\

推荐答案

看起来您有tracks个存储在一个数组中(不知道有关数据 struct 和模型的任何细节).当用户请求一个不存在的曲目时,它返回nil.

这意味着,当整个tracknil的时候,询问该轨道的name是否是nil是没有意义的.

我想这对你来说应该很管用:

if @album[@user_choice_album].tracks[10].nil?
  return 

或简化:

return unless @album[@user_choice_album].tracks[10]

Ruby相关问答推荐

如何在Ruby中匹配大型IP网络对象列表中的IP地址

在 Ruby 中,如何编写一个可以与 &:symbol 一起使用的简单方法?

设计登录根路由rails 3

如何在 Ruby 中生成一个包含 n 个唯一随机数的列表?

bundler 可以告诉我 Gemfile 中的哪些 gem 有更新的版本

Ruby数组中的`return`#map

将参数传递给erb视图

如何从 Gemfile 安装 gem?

根据另一个数组的元素对数组进行排序

如何在不按 Enter 的情况下获取单个字符?

在单个 node 上使用 XPath 返回所有 node 中的元素

Ruby 模块 - 包括 do 结束块

按可能为 nil 的属性对对象的 ruby​​ 数组进行排序

Ruby 中方法名称的限制是什么?

Sinatra 是多线程的吗?

为什么 Ruby 的 Date 类会自动加载,但 DateTime 不会?

我们什么时候在 Rails 中使用 "||=" 运算符?它的意义是什么?

Ruby on Rails switch

如何计算 Ruby 数组中的重复元素

Ruby Activerecord IN 子句