Ruby on rails 在Ruby if条件中使用正则表达式

Ruby on rails 在Ruby if条件中使用正则表达式,ruby-on-rails,ruby,Ruby On Rails,Ruby,我试图在Ruby(1.9.2)if语句中使用正则表达式作为条件,但即使正则表达式的计算结果为nil,它也会不断返回true if (params[:test] =~ /foo/) return "match" else return "no match" end 即使Rails.logger.info(params[:test])将测试设置为“bar” 对我有用。调试params[:test]中的内容我无法重现(而且不应该发生这种情况)。可能你认为params[:test]==“bar

我试图在Ruby(1.9.2)if语句中使用正则表达式作为条件,但即使正则表达式的计算结果为nil,它也会不断返回true

if (params[:test] =~ /foo/)
  return "match"
else
  return "no match"
end
即使
Rails.logger.info(params[:test])
将测试设置为
“bar”


对我有用。调试
params[:test]

中的内容我无法重现(而且不应该发生这种情况)。可能你认为
params[:test]==“bar”
是错误的。我刚刚在irb命令行中检查了它,无法再现你的情况<代码>“bar”=~/foo/返回零。您的问题在其他地方…我有Rails.logger.info(params[:test])在if语句上方的一行,它输出“bar”@Exupery:Try
Rails.logger.info(params[:test].class)
。不可能是
params[:text]==“bar”
,否则您的Ruby会出现bug,这似乎不太可能。在
if
之前,是否可以使用pry查看当前执行索引?这将使您调试
params[:test]
的当前值比调试日志语句更好(并且您可以交互式地尝试正则表达式匹配)。在进一步测试后,似乎只有在第一次调用该方法时才正确评估条件。无论“test”变成什么,后续调用都返回相同的值。显然,我需要尝试确定是什么导致Rails使用缓存的值。谢谢大家的帮助。嗨@michael,你能解释一下“=~”的作用和其他用途吗?“这对我来说是新的,只是有点需要一些理解。”罗杰佩雷斯看到问题或提到的地方。
if params[:test] =~ /foo/
    # Successful match
else
    # Match attempt failed
end