取消定义 Railscasts 154 之后的方法
我是这里的新手。
我一直在关注 Railscasts 154,但是当我尝试提交评论时,我收到此错误:
undefined method `classify' for nil:NilClass
我很少调试指出了这一点:
(rdb:5) name =~ /(.+)_id$/
0
调试 name
comes up with micropost_id
but $我以某种方式返回nil
。
private
def find_commentable
params.each do |name, value|
if name =~ /(.+)_id$/
debugger
return $i.classify.constantize.find(value)
end
end
nil
end
我该如何解决这个问题?
I am quite the newbie here.
I have been following Railscasts 154 but when I try submitting a comment, I get this error:
undefined method `classify' for nil:NilClass
I little debugging has pointed me to this:
(rdb:5) name =~ /(.+)_id$/
0
debugging name
comes up with micropost_id
but $i is somehow returning nil
.
private
def find_commentable
params.each do |name, value|
if name =~ /(.+)_id$/
debugger
return $i.classify.constantize.find(value)
end
end
nil
end
How do I get past this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这一行:
应该是:
$1
是一个全局变量,存储正则表达式匹配结果中的第一个匹配组。This line:
should be:
$1
is a global variable storing the first matched group from the regular expression match result.看起来
$i.classify
应该是$1.classify
。在 ruby 中,$1, $2, ...
是保存最后一个正则表达式匹配组的值的全局变量。在这种情况下,$1 将包含正则表达式中括号中的内容:/(.+)_id$/
。在您的情况下,
$i
是nil
,因此您尝试在nil
上调用classify
时会出错。Looks like
$i.classify
should've been$1.classify
. In ruby$1, $2, ...
are global variables which hold the value of the last regexp-matched group. In this case $1 will contain whatever is in parenthesis in your regexp:/(.+)_id$/
.In your case
$i
isnil
, therefore you get error trying to callclassify
onnil
.