Ruby on rails 我不知道';我不知道为什么实例方法在Ruby中被调用时变成了NilClass
我可能误解了方法的概念,如果你愿意的话,我需要你的帮助 我面临的问题是,下面的这个方法完美地返回String,但当我尝试在另一个类的方法中使用它时,它返回NilClassRuby on rails 我不知道';我不知道为什么实例方法在Ruby中被调用时变成了NilClass,ruby-on-rails,ruby,Ruby On Rails,Ruby,我可能误解了方法的概念,如果你愿意的话,我需要你的帮助 我面临的问题是,下面的这个方法完美地返回String,但当我尝试在另一个类的方法中使用它时,它返回NilClass class FruitConverter def fruit_converter(fruit) return if fruit.nil? find_favorite_fruit = list.find{|k,v| k == fruit} find_favorite_fr
class FruitConverter
def fruit_converter(fruit)
return if fruit.nil?
find_favorite_fruit = list.find{|k,v| k == fruit}
find_favorite_fruit ← when I print it it returns "りんご" if fruit == "apple"
end
def list
{
"りんご" : "とっても美味しいりんご",
"オレンジ" : "とっても美味しいオレンジ"
}
end
end
↑这在这里工作得很好,但是当我在另一个类的方法中使用它时,结果变成了这样的类
def fruit
fav_fruit = @target_person.fruit
fruit = FruitConverter.new.fruit_converter(fruit)
fruit ←when print fruit.class it returns nilClass.
end
class SizeConverter
def size_converter(size)
return if size.nil?
find_size = list.find{|k,v| k == size.to_sym}
find_size
end
def list
{
small : "Ohkii",
medium : "chukurai"
}
end
end
我有一堆几乎相同的实例方法,这些方法可以工作。其中一个是这样的
def fruit
fav_fruit = @target_person.fruit
fruit = FruitConverter.new.fruit_converter(fruit)
fruit ←when print fruit.class it returns nilClass.
end
class SizeConverter
def size_converter(size)
return if size.nil?
find_size = list.find{|k,v| k == size.to_sym}
find_size
end
def list
{
small : "Ohkii",
medium : "chukurai"
}
end
end
这个很好用。所以第一个代码的错误可能是因为它的结果。
但我不知道如何修复它
我希望你能告诉我任何线索。
谢谢。对不起。一开始似乎没有问题。
唯一的问题是,我将列表中不存在的水果交给了水果转换器。这就是它返回零的原因。但当我给真正的水果时,它起了作用。无论如何,谢谢大家。您可以使用
list.index(value)
而不是find
。非常感谢!我的代码现在看起来很干净。但我还是得到了第一名。你知道为什么吗?不-没有人能在不知道@target\u person.fruit
返回什么的情况下回答这个问题。你传递的水果正确吗<代码>水果=水果转换器。新的。水果转换器(fav\U水果)?是的,我正确地传递了水果。我想这就是为什么我可以在水果转换(水果)方法中得到正确的结果。我开始认为我没有在水果转换器类中初始化。这可能是问题的原因吗?