Railscasts 154之后的未定义方法

时间:2011-02-25 08:04:06

标签: ruby-on-rails ruby polymorphic-associations

我是新手。

我一直在关注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

我如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

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

在您的情况下$inil,因此您在classify上致电nil时出错。

答案 1 :(得分:1)

这一行:

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

应该是:

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

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

相关问题