我无法理解如何解决此错误,因为该方法确实存在,我已经使用'Hi'方法对其进行了测试。
irb(main):001:0> require 'yaml'
=> true
irb(main):002:0> require 'tm'
=> true
irb(main):003:0> Tm.hi
Hey Tm here for duty!
=> nil
irb(main):004:0> hashfile = YAML.load_file('fr.yaml')
=> {"fr"=>{"colors"=>{"yellow"=>"Jaune", "white"=>"Blanc"}, "hello"=>"Bonjour"}}
irb(main):005:0> t = load_translation(hashfile)
Traceback (most recent call last):
2: from /Users/abderrahmane/.rbenv/versions/2.5.1/bin/irb:11:in `<main>'
1: from (irb):5 NoMethodError (undefined method `load_translation' for main:Object)
我的班级:
class Tm
def self.hi
puts "Hey Tm here for duty!"
end
def auxload(hash, lang, concat='')
ans = {}
hash.each do |key, val|
if val.class == Hash
aux = auxload(val, lang, concat+key+'.')
aux.each do |k, v|
ans[k]=v
end
else
ans[concat+key]={lang => val}
end
end
return ans
end
# load the translation from the yaml files
def load_translation(hash)
key,value = hash.first
return auxload(value,key)
end
end
答案 0 :(得分:2)
要在您的类上调用该方法,首先需要创建该类的实例,然后在该实例上调用该方法。 e.g。
tm = Tm.new
t = tm.load_translation(hashfile)
答案 1 :(得分:1)
您没有从load_translation
class
的对象调用Tm
方法。
您需要一个类的实例:
tm = Tm.new
tm.load_translation(hashfile)
答案 2 :(得分:0)
首先需要通过创建类的实例来调用 load_translation 方法〜
tm = Tm.new
tm.load_translation(hashfile)