2011-03-19 40 views
2

所以,我想發送電子郵件給用戶一些鏈接,你可以點擊做的事情,但如果用戶還沒有登錄,我希望能夠讓用戶登錄,然後將他重定向到他正在嘗試訪問的內容。登錄到原始任務後重定向

我在application_controller.rb這些方法

。這被稱作對地方的before_filter的URL鏈接,捕捉用戶不應該的地方,他正試圖去商店的意圖

def user_in_beta 
    unless user_signed_in? && current_user.beta 
     if user_signed_in? 
     redirect_to :home_betawait 
     else 
     session[:original_uri] = request.request_uri 
     redirect_to new_user_session_path 
     end 
    end 
    end 

在他登錄並將他放回他所屬的地方後,這應該會抓住他。

def after_sign_in_path_for(resource_or_scope) 
    if current_user.beta 
     if session[:original_uri].nil? 
     :home_index 
     else 
     session[:original_uri] 
     end 
    else :home_betawait 
    end 
    end 

但是,它沒有。相反,我得到一個非常討厭的「不能重定向到零!」如果我將它讀入一個局部變量並存儲它,那麼更多的事情會崩潰。我非常困惑,這是一件非常普通的事情。

回答

4

我希望能夠讓用戶 日誌中,然後重定向他回到 什麼,他試圖去。

此行爲已由Devise的authenticate_user! before_filter提供。既然你的「設計」標籤在這個故事和使用user_signed_in?建議你已經在使用Devise爲什麼重新創建自己的解決方案?

+0

哎喲我很笨!謝謝! – 2011-03-19 04:41:55