2017-06-19 58 views
0

我是一個整合反應+紅寶石的新手,想知道是否有方法來訪問我存儲的會話內容?在JSX文件中的Ruby Sinatra會話?

例如,在我的app.rb中,我存儲了sessions[:return_url]=blah.com。我目前正在爲我的用戶界面使用reactjs,並希望在點擊按鈕時訪問此return_url。有沒有辦法訪問它?

我試着做<%= return_url = sesssions[:return_url] %>但是,這並不工作,因爲我在.jsx文件是它不能解釋這個哈哈(這是值得一試)

任何提示,將不勝感激!

+0

根據我的理解,您無法從客戶端讀取rails會話,但您可能可以通過Ajax請求 –

回答

1

如果您想要在客戶端讀取會話相關的非敏感數據,您可以從服務器設置一個cookie並在客戶端使用javascript讀取它。

您可以設置cookies與西納特拉詳見這裏:http://www.sinatrarb.com/contrib/cookies

你可以詳見這裏用javascript讀取cookies:Read a javascript cookie by name

另一種方法是呈現在服務器端JavaScript和存儲值在一個JavaScript變量。我相信你已經嘗試過這樣的:

<%= return_url = sesssions[:return_url] %>` 

不過,這只是設置一個Ruby的局部變量,它在客戶端迷失,也許你想設置return_url只要你想按鈕的href已按下?

但是,如果你需要一個javascript單擊處理內部變量,只呈現一個JavaScript變量在您的ERB觀點:

var returnUrl = "<%= sessions[:return_url] %>"; 

通過以上你應該訪問JavaScript變量returnUrl在點擊一個按鈕處理程序提供它在相同或更高的詞彙範圍內。