2016-04-21 164 views
3

我想在登錄後將用戶重定向到同一頁面。這種情況是,如果用戶未登錄,用戶將被重定向到登錄頁面。在登錄頁面上,當他點擊其中一個可用用戶選項時,我想存儲user_id,然後將其重定向到相同的用戶選項他來自哪個頁面。 對於這一點,我用下面的代碼:登錄後將用戶重定向到同一頁面(Rails)

在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。

請解釋一下我做錯了

+0

當你這樣做:'如果request.format.html? ''在'''''''''''''''''''''''''''那就是爲什麼'會議[:referer]'是零。 – 7urkm3n

+0

你在哪裏保存'referrer'到會話? –

+0

在會話[:referer]中。如果用戶未登錄,它將被保存。請查看application_helper.rb @Hieu Pham –

回答

2

要調用它異步if request.format.html?然後要求的格式是html?returns false。由於它returns false您無法存儲此會話session[:referer] = request.url

另外Rails也有redirect_to :back選項。試試這個下面首先,讓我知道...

助手:

module ApplicationHelper 
    def check_signed_in 
    if session[:user] 
     session[:referer] = request.url 
    end 
    end 
end 

控制器:

class SigninController < ApplicationController 
    include ApplicationHelper 

    def index 
    check_signed_in 
    session[:user] = params[:user_id] 
    redirect_to session[:referer] 
    end 
end 
+0

謝謝。試過但沒有工作。發生了什麼:當我嘗試訪問索引頁時,它正在帶我登錄頁面(因爲我沒有登錄)。在登錄頁面中,它正在調用上一頁。這是一個遞歸行爲,最後它崩潰了。我永遠無法看到登錄頁面選擇一個選項。你能推薦一些其他的方式嗎?謝謝! –

+0

@MouryaKoluguri我只是dnt知道你如何實現它。但看看這本書,他在轉發url - >'https:// www.railstutorial.org/book/updating_and_deleting_users'時有一個很好的例子,就像'session [:forwarding_url]'一樣搜索它。 – 7urkm3n

相關問題