2011-08-05 74 views
0

我需要能夠在當前頁面上設置我的導航,具體取決於用戶所在的頁面。Rails 3 - 從當前控制器檢索上次訪問的動作/控制器

pageX屬性=> pageA的(tab1selected) pageY => pageA的(tab2selected)

我從閱讀你可以使用request.env [ 「HTTP_REFERER」]知道,但我看,這並不總是得到如果用戶有防火牆等回報

我在我的應用程序中使用如果有幫助的設計。

有沒有另一種方法?

感謝 亞歷克斯

回答

2

雖然不是一個快速的解決方案,它的工作原理:

在結束每個控制器與視圖,調用一個方法來設置你的店在會話當前的行動。如果您使用多個控制器,則爲控制器創建另一個變量。

例如

def index 
    ... # your stuff 
    set_action("index") 
end 

protected 
def set_action(action_name) 
    session[:action]=action_name 
    #session[:controller]="my_controller_name" 
end 

可以在每個控制器重建set_action方法,或做一個助手,然後用2個參數:

def last_visited(action_name, controller_name) 
    session[:action]=action_name 
    session[:controller]=controller_name 
end 
2

這個問題被問得很久以前,但對於其他人查看此,我的解決方案(雖然有點破解)是:

url = Rails.application.routes.recognize_path(request.referrer) 
last_controller = url[:controller] 
last_action = url[:action]