Ruby on rails rails模块中的字符串操作 class Music

Ruby on rails rails模块中的字符串操作 class Music,ruby-on-rails,module,symbols,Ruby On Rails,Module,Symbols,我有一个音乐类,想要定义一个名称方法,我可以在视图中使用它,比如:@Music.name。现在,我可以在第1行中获取video\u file\u name.rindex('.')的值,但在第2行中无法使用它(最后一个)。它说“没有从nil到整数的隐式转换”。如果我将最后一个变量更改为一个数字,它将起作用 有人知道发生了什么吗?错误是说last是nil rindex如果找不到要查找的子字符串,则返回nil 因此 嗨,阿列克斯布兰德,谢谢,我同意你的观点,但关键是如果我运行video_file_na

我有一个音乐类,想要定义一个
名称
方法,我可以在视图中使用它,比如:
@Music.name
。现在,我可以在第1行中获取
video\u file\u name.rindex('.')
的值,但在第2行中无法使用它(最后一个)。它说
“没有从nil到整数的隐式转换”
。如果我将最后一个变量更改为一个数字,它将起作用


有人知道发生了什么吗?

错误是说
last
nil

rindex
如果找不到要查找的子字符串,则返回
nil

因此


嗨,阿列克斯布兰德,谢谢,我同意你的观点,但关键是如果我运行video_file_name.rindex('.'),我可以得到值11。当我将其指定给last时,last仍然是nil。你有这个主意吗?你是怎么做到的?在控制台里?如果你运行它,得到的是11,那么我不知道如何将它赋给变量会使它为零。似乎我不能将变量放入[,]。
class Music < ActiveRecord::Base
 attr_accessible :counter, :video, :video_file_name

   def name

    last=video_file_name.rindex('.') //line 1
    video_file_name[last,4]="" //line 2
    video_file_name //line3
  end
end
last = video_file_name.rindex('.')
# last is nil because it does not contain a .
video_file_name[last, 4]="" # this line will crash because you are giving a nil index