Ошибка (как вы, вероятно, подозревали) происходит в следующей строке:
<% @posts.each do |post| %>
Каким-то образом @posts в конечном итоге становится нулевым, даже если мы хотим, чтобы это был список.
Это немного странно, потому что приведенный выше код выглядит так, как будто он должен работать.Я постараюсь помочь вам отследить проблему.
Post.all эквивалентен Post.find (: all), и согласно документации для find он может вернуть ноль, но я не знаю, когда это когда-нибудь случится на практике.Обычно он должен возвращать пустой список ([]
), если в базе данных нет записей, или выдавать исключение, если таблица базы данных вообще не существует.
Так что на всякий случай Post.all каким-то образомвозвращает ноль, попробуйте @posts = []
вместо @posts = Post.all
в контроллере..each
должен работать тогда.
Если (как я подозреваю) это не так, я предполагаю, что каким-то образом контроллер, отличный от того, который вы опубликовали выше, будет выполнен.Тогда, поскольку @posts никогда не был установлен, попытка доступа к нему просто даст вам ноль, что объясняет ошибку.Так что проверьте ваши пути и имена классов, и убедитесь, что код, который, по вашему мнению, запускается на самом деле запускается.
Надеюсь, что это поможет вам выяснить, что идет не так - и дайте нам знатьрешил проблему за вас!