Ruby on rails 我不知道';我不知道为什么实例方法在Ruby中被调用时变成了NilClass

Ruby 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

我可能误解了方法的概念,如果你愿意的话,我需要你的帮助

我面临的问题是,下面的这个方法完美地返回String,但当我尝试在另一个类的方法中使用它时,它返回NilClass

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水果)?是的,我正确地传递了水果。我想这就是为什么我可以在水果转换(水果)方法中得到正确的结果。我开始认为我没有在水果转换器类中初始化。这可能是问题的原因吗?