문제

Hartl의 자습서를 통해 레일을 배우고 있지만 9.2.3 링크

이 섹션 이이 섹션 이전에 완벽하게 작동하기 전에 모든 것이 완벽하지만, 여기에서 얻은 후에, 다른 사용자 / 다른 사용자로 액세스 / 사용자 / 사용자 / 편집 및 로그인하면 편집 페이지가 아닌 사용자 페이지로 다시 가리키는 사용자 페이지로 돌아갑니다....에

세션 도우미 :

def redirect_back_or(default)
    redirect_to(session[:return_to] || default)
    session.delete(:return_to)
end

def store_location
    session[:return_to] = request.fullpath
end
.

사용자의 컨트롤러 메소드 for before_Filter

private

def signed_in_user
  unless signed_in?
    store_location
    redirect_to signin_path, notice: "Please sign in."
  end
end

def correct_user
  @user = User.find(params[:id])
  redirect_to(root_path) unless current_user?(@user)
end
.

사용자 컨트롤러에서 필터 전

before_filter :signed_in_user,only:[:edit,:update,:index]
before_filter :correct_user, only:[:edit,:update]
.

지금 내 코드 지금까지 github

도움이 되었습니까?

해결책

SessionsController에서 redirect_to 대신 redirect_back_or 사용자를 부재 중에 누락했습니다.

  def create
    user = User.find_by_email(params[:session][:email])
      if user && user.authenticate(params[:session][:password])
        sign_in user
        redirect_back_or user
      else
        flash.now[:error] = 'Invalid email/password combination' # Not quite right!
        render 'new'
      end
  end
.

페이지 하단의 디버그 정보에 세션을 추가하여 return_to가 성공적으로 로그인 한 후에도있었습니다.

{"session_id"=>"4dcc1baaf651aaab953026902b32f805", "_csrf_token"=>"0YkP+yd/DDuInX4kIBkjwbzxV1GK0oYBDAXEiWnHLGs=", "return_to"=>"/users/1/edit"}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top