我想在登录后将用户重定向到同一页面。这种情况是,如果用户未登录,他将被重定向到登录页面。在登录页面上,当他单击可用的用户选项之一时,我想存储 user_id,然后将他重定向回相同的页面他来自的页面。 为此,我使用以下代码:
在 application_helper.rb 中:
module ApplicationHelper
def check_signed_in
if session[:user] == nil
if request.format.html?
session[:referer] = request.url
redirect_to signin_index_path
else
@error = 'Please Signin!'
@forward_page = '/signin'
render 'signin/show_signin.js'
end
end
end
end
在 SigninController 中:
class SigninController < ApplicationController
def index
session[:user] = params[:user_id]
redirect_to session[:referer]
end
end
在登录/索引页面:
We simulate a signin here. Click on an user and you will logged in as the selected user and you will be redirected the previous page.
<%= link_to 'Sam', controller:"signin", action: "index" , user_id: 284542812, remote: true %>
<%= link_to 'Marge', controller:"signin", action: "index" , user_id: 604700687, remote: true %>
我得到的错误:
user_id 未被保存,在重定向时我收到一条错误消息,指出 session[:referer] 为 nil。
请解释我做错了什么
最佳答案
你称它为异步 if request.format.html?
然后询问格式是 html?
它 返回 false
。由于它返回 false
,您无法存储此 session session[:referer] = request.url
。
Rails 也有 redirect_to :back
选项。先试试下面这个,然后告诉我...
助手:
module ApplicationHelper
def check_signed_in
if session[:user]
session[:referer] = request.url
end
end
end
Controller :
class SigninController < ApplicationController
include ApplicationHelper
def index
check_signed_in
session[:user] = params[:user_id]
redirect_to session[:referer]
end
end
关于ruby-on-rails - 登录后将用户重定向到同一页面(Rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36775006/