我试图欺骗一个非常复杂的黑盒子以不同的方式显示一些浮点数(它是 Gruff 图形库,所以它被渲染为图像)。
在控制台中,我可以粘贴这个:
logger = RAILS_DEFAULT_LOGGER
logger.debug "Here's a float #{455.67.to_s}"
eval %{class Float
def to_s_with_time
h = (self / 60).to_i
m = self.to_i % 60
return h.to_s + ':' + m.to_s
end
alias_method_chain :to_s, :time
end
}
logger.debug "Here's another #{455.67.to_s}"
我会看到
Here is a float 455.67
Here is another 7:35
但是如果我将相同的代码粘贴到控制器中,我会看到
Here is a float 455.67
Here is another 455.67
为什么我不能在控制器中替换 Float.to_s?我也将接受对“什么是更好的方法来实现这一点?”这个问题的回答。