gpt4 book ai didi

ruby-on-rails - RailsTutorial.org Chapter9 session.delete 问题

转载 作者:太空宇宙 更新时间:2023-11-03 16:06:34 25 4
gpt4 key购买 nike

我正在学习 http://ruby.railstutorial.org 上的教程

具体来说,第 9 章 (9.2.3) http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-users#top

当用户在访问受限页面时收到登录提示,然后在成功登录后被重定向回受限页面时,我已经设法解决了这个问题。

我试图让它在一个重定向到 protected 页面后,下一次登录尝试将直接返回到主用户配置文件页面,但是,session.delete(:return_to)似乎没有工作,用户被反复引导回最初保存的 protected 页面。这是我的代码:

我的 session Controller :

class SessionsController < ApplicationController

def new

end

def create
user = User.find_by_email(params[:session][:email])
if user && user.authenticate(params[:session][:password])
sign_in user
redirect_back_or user
# Sign the user in and redirect to the user's show page.
else
# Create an error message and re-render the signin form.
flash.now[:error] = 'Invalid email/password combination'
render 'new'
end
end

...

end

我的 session 助手:

module SessionsHelper

def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
self.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.find_by_remember_token(cookies[:remember_token])
end

def current_user?(user)
user == current_user
end

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

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

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

如果您能提供任何帮助,那就太棒了!似乎 session.delete() 根本不起作用。

最佳答案

下面的 block 解决了它。无需更改任何其他内容。

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

关于ruby-on-rails - RailsTutorial.org Chapter9 session.delete 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12517561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com