NoMethodError in Main#index undefined method `each' for nil:NilClass

Пытаюсь отобразить список всех пользователей, но выдаёт ошибку.

Вот мой UserController:

UserController

application.html.erb:

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Василиса

Переменную @users вы определяете в действии index в UsersController. Это значит, что автоматически она будет доступна во views/users/index.

Вы же пытаетесь использовать её в лэйауте application, там она не определена и равна nil, отсюда и ошибка.

То, что находится в application.html.erb, будет отображено на каждой странице вашего приложения. Если вы действительно хотите видеть список пользователей на каждой странице, то вам нужно определять его в ApplicationController

#application_controller.rb
class ApplicationController < ActionController::Base
  before_action :set_users

  private

  def set_users
    @users = User.all
  end
end 

Если же вы хотите отображать список пользователей на странице /users, то переместите ваш код из лэйаута application во views/users/index.

В любом случае, перечитайте ещё раз внимательно в документации главу про рендеринг

→ Ссылка