如何传递参数调用Logger.info?

时间:2010-12-09 03:24:06

标签: ruby-on-rails

我的方法如下:

def test(p1, p2)
   logger.info 'calling test with p1=' + p1 + ' p2 = ' + p2
end

获得演员错误,我应该如何巧妙地做到这一点?

1 个答案:

答案 0 :(得分:1)

您的强制转换错误可能是因为p1或p2不是字符串类型。 Ruby的字符串插值将为您处理:

def test(p1, p2)
  logger.info "calling test with p1=#{p1} p2=#{p2}"
end

以下是它的工作原理:ruby对字符串中的任何变量(由to_s表示)调用#{},将它们转换为字符串。 ruby中的每个对象都有这种方法,所以你不必担心它。我希望这有帮助!

更新:这是一个简单但有趣的问题,因为它不仅仅是满足眼睛(如变形金刚)。 Ruby执行此操作的方式实际上打​​开了您可以在自己的类中使用的功能的大门。我把答案变成了一篇博文,里面有代码示例和更详细的解释:

Ruby String Interpolation