取消定义 Railscasts 154 之后的方法

发布于 2024-10-19 07:31:03 字数 552 浏览 4 评论 0原文

我是这里的新手。

我一直在关注 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

愚人国度 2024-10-26 07:31:03

这一行:

return $i.classify.constantize.find(value)

应该是:

return $1.classify.constantize.find(value)

$1 是一个全局变量,存储正则表达式匹配结果中的第一个匹配组。

This line:

return $i.classify.constantize.find(value)

should be:

return $1.classify.constantize.find(value)

$1 is a global variable storing the first matched group from the regular expression match result.

笑饮青盏花 2024-10-26 07:31:03

看起来 $i.classify 应该是 $1.classify。在 ruby​​ 中,$1, $2, ... 是保存最后一个正则表达式匹配组的值的全局变量。在这种情况下,$1 将包含正则表达式中括号中的内容:/(.+)_id$/

在您的情况下,$inil,因此您尝试在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 is nil, therefore you get error trying to call classify on nil.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文