2016-10-28 3 views
1

10.4.1 절을 통해 샘플 응용 프로그램 자습서를 완료했습니다. 내 검사는 모두 초록색입니다. 10.4.1을 완료하기 전에 모든 것이 예상대로 작동했습니다. 그러나 _user.html.erb 부분을 편집하여 삭제 링크를 추가하면 로그인 기능이 작동하지 않습니다. 기존 사용자에 대한 암호는 인식되지 않습니다. 새 사용자를 만들면 가입 프로세스가 작동합니다. 그러면 새 사용자의 이메일과 비밀번호로 로그 아웃하고 로그인 할 수 있지만 이전에 생성 된 계정에는 액세스 할 수 없습니다. 이것에 대해 무엇을해야할지 모르겠습니다.railstutorial.org 샘플 응용 프로그램 로그인 암호가 인식되지 않습니다.

_user.html.erb :

<li> 
    <%= gravatar_for user, size: 50 %> 
    <%= link_to user.name, user %> 
    <% if current_user.admin? && !current_user?(user) %> 
    | <%= link_to 'delete', user, method: :delete, 
     data: { confirm: 'You sure?' } %> 
    <% end %> 
</li> 

users_controller.rb 레일 서버 콘솔에서

class UsersController < ApplicationController 
    before_action :logged_in_user, only: [:index, :edit, :update] 
    before_action :correct_user, only: [:edit, :update] 

    def index 
    @users = User.paginate(page: params[:page]) 
    end 

    def show 
    @user = User.find(params[:id]) 
    end 

    def new 
    @user = User.new 
    end 

    def create 
    @user = User.new(user_params) 
    if @user.save 
     log_in @user 
     flash[:success] = "Welcome to the Sample App!" 
     redirect_to @user 
    else 
     render 'new' 
    end 
    end 

    def edit 
    @user= User.find(params[:id]) 
    end 

    def update 
    #@user = User.find(params[:id]) 
    if @user.update_attributes(user_params) 
     #sign_in @user 
     flash[:success] = "Profile updated" 
     redirect_to @user 
    else 
     render 'edit' 
    end 
    end 

    def destroy 
    User.find(params[:id]).destroy 
    flash[:success] = "User destroyed" 
    redirect_to users_path 
    end 

    private 
    def user_params 
    params.require(:user).permit(:name, :email, :password, :password_confirmation) 
    end 

    # Before filters 

    # Confirms a logged-in user 
    def logged_in_user 
    unless logged_in? 
     store_location 
     flash[:danger] = "Please log in." 
     redirect_to login_url 
    end 
    end 

    # Confirms the correct user. 
    def correct_user 
    @user = User.find(params[:id]) 
    redirect_to(root_url) unless current_user?(@user) 
    end 

end 

오류 메시지.

답변

1

심지어 그것보다 더 어리 석다. 연습의 일환으로 첫 번째 사용자의 비밀번호를 편집했지만 나중에 데이터베이스가 재설정되었습니다. 처음 기본 암호를 사용했는데 내가 변경 한 암호가 아닙니다. 순간에 매우 양 같은 느낌.

0

"레일 c"명령을 사용하여 터미널에서 레일 콘솔을 실행하십시오. 그런 다음 u = Users.all을 입력하십시오. 데이터베이스의 기존 사용자 수를 확인하십시오. 어쩌면 당신이 말하는 그 사용자가 존재하지 않을 수도 있습니다. 아마 그 사용자를 만들 때 그것은 임시 세션이었을 것입니다.

관련 문제