我是新手。
我一直在关注Railscasts 154但是当我尝试提交评论时,我收到此错误:
undefined method `classify' for nil:NilClass
我的调试很少指向我:
(rdb:5) name =~ /(.+)_id$/
0
调试name
出现micropost_id
,但$ i以某种方式返回nil
。
private
def find_commentable
params.each do |name, value|
if name =~ /(.+)_id$/
debugger
return $i.classify.constantize.find(value)
end
end
nil
end
我如何解决这个问题?
答案 0 :(得分:1)
看起来$i.classify
应该是$1.classify
。 ruby $1, $2, ...
是全局变量,它保存最后一个正则表达式匹配的组的值。在这种情况下,$ 1将包含正则表达式括号中的任何内容:/(.+)_id$/
。
在您的情况下$i
为nil
,因此您在classify
上致电nil
时出错。
答案 1 :(得分:1)
这一行:
return $i.classify.constantize.find(value)
应该是:
return $1.classify.constantize.find(value)
$1
是一个全局变量,用于存储正则表达式匹配结果中的第一个匹配组。