метод undefine после Railscasts 154 - PullRequest
0 голосов
/ 25 февраля 2011

Я здесь совсем новичок.

Я следил за 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 ]

1 голос
/ 25 февраля 2011

Эта строка:

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

должно быть:

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

$1 - глобальная переменная, хранящая первую найденную группу из результата совпадения регулярного выражения.

1 голос
/ 25 февраля 2011

Похоже, $i.classify должно было быть $1.classify.В ruby ​​$1, $2, ... - глобальные переменные, которые содержат значение последней группы, с которой сопоставлено регулярное выражение.В этом случае $ 1 будет содержать все, что находится в скобках в вашем регулярном выражении: /(.+)_id$/.

В вашем случае $i равно nil, поэтому вы получаете ошибку при попытке вызвать classify на nil.

...