Вам нужно инициализировать переменную экземпляра @user
.Вы, вероятно, захотите сделать что-то вроде этого:
def show
@user = User.find(params[:id])
@profile = @user.profile
end
Скучное объяснение: Переменные экземпляра (те, что с @
спереди) по умолчанию nil
.Их можно де-факто «создать», просто присвоив ему ненулевое значение.Здесь @user
является переменной экземпляра, и она указывает на ноль, потому что ей ничего не было назначено.profile
вызывается в контексте nil
, который не имеет метода profile
, поэтому вы получаете исключение no method.Это в отличие от локальных переменных, начиная с буквы в нижнем регистре, которая в этом случае вызвала бы исключение локальной переменной, не найденной.