NoMethodError, хотя метод определен в Ruby

У меня небольшая проблема с методом в Ruby. «информация» — это хэш, который я хочу перебрать, при необходимости отформатировать значение и сохранить новый хеш с отформатированными/измененными парами. Следующее:

formatted_information = {}     

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

предполагается вызвать другой метод в том же документе, который обрабатывает форматирование (поэтому, если ключ «имя» был найден, он должен запустить «format_name» с соответствующим значением). Хотя метод существует, я получаю следующую ошибку:

NoMethodError: неопределенный метод `format_name ("Некоторое имя")'

Какую ошибку я здесь делаю?

Возможный ввод: информация = {:name => "Имя"}

Ожидаемый результат: formatted_information = {:name => "B Name"}


person Severin    schedule 26.11.2013    source источник


Ответы (1)


send принимает имя метода в качестве первого аргумента и аргументы этого метода в качестве второго аргумента. Вы должны использовать

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

person Logan Serman    schedule 26.11.2013