NoMethodError虽然方法是在Ruby中定义的

时间:2013-11-26 18:00:38

标签: ruby-on-rails ruby ruby-on-rails-4 ruby-2.0

我在Ruby中的方法遇到了一个小问题。 “information”是我想要迭代的哈希,必要时格式化值并保存带有格式化/更改对的新哈希。以下内容:

formatted_information = {}     

information.each do |key, value|
  formatted_information[:"#{key}"] = self.send("format_#{key}(#{value})")
end

应该在处理格式化的同一文档中调用另一个方法(因此如果找到键“name”,它应该运行带有相应值的“format_name”)。虽然该方法存在,但我收到以下错误:

  

NoMethodError:未定义的方法`format_name(“Some Name”)'

我在这里犯了什么错误?

可能的输入: information = {:name => “一个名字”}

预期产量: formatted_information = {:name => “B名”}

1 个答案:

答案 0 :(得分:2)

send接受方法名作为第一个参数,并将该方法的参数作为第二个参数。你应该使用

send("format_#{key}", value)