ActiveRecord :: RecordNotFound - не удалось найти пользователя без идентификатора - PullRequest
1 голос
/ 07 марта 2012

Следуя инструкциям Hartl по Rails (3.2).Я продолжаю получать это сообщение об ошибке или, как ни странно, сообщение «Соединение было сброшено»:

ActiveRecord::RecordNotFound in UsersController#show 
Couldn't find User without an ID

Я пытаюсь войти в систему, и после успешного входа в систему я хочу, чтобы приложение перенаправило пользователя к пользователю /show.html.erb.Я считаю, что я передаю параметр: id в методе show в контроллере пользователей.Буду признателен за любой совет / помощь!

Я вставил несколько соответствующих файлов ниже.Дайте мне знать, если вам что-нибудь понадобится.1016 * Редактировать: Добавлены сеансы_helper.rb

module SessionsHelper

def sign_in(user)
    cookies.permanent.signed[:remember_token] = user.remember_token
    current_user = user
end


def signed_in?
  !current_user.nil?
end

def current_user=(user)
    @current_user = user
end

def current_user
  @current_user ||= user_from_remember_token
end


def sign_out
  cookies.delete(:remember_token)
  current_user = nil
end

private

def user_from_remember_token
  remember_token = cookies[:remember_token]
  User.find_by_remember_token(remember_token) unless remember_token.nil?
end



end

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

Я думаю, что в def create в контроллере сессии вы не передали ни одного идентификатора. Если у вас есть идентификатор пользователя сессии, пожалуйста, передайте его

Код может быть

redirect_to 'user/show' , :id => session[:user_id]
redirect_to user_url(:session[:user_id])

Можете ли вы проверить current_user быть. с рендерингом вроде

render :text => current_user.inspect and return false в контроллере сессии до

redirect_to user_url(:session[:user_id])

. Если это не происходит, есть проблема в вашей аутентификации.

1 голос
/ 07 марта 2012

Похоже, что current_user nil в вашем случае. Давайте посмотрим на ваше действие UsersControllers шоу. Он пытается найти запись пользователя с id = params[:id], которая не установлена, если ваш URL-адрес users / show . Find ActiveRecords find метод ожидает найти запись и выдает ошибку, если нет.

Попытайтесь выяснить, почему current_user оценивает в ноль. Возможно, вы просто не вошли в систему или в вашей реализации есть ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...