2012-06-03 97 views
5

我有一個登錄燈箱,需要在用戶未登錄時顯示。燈箱完全在javascript,fancybox中實現,並且使用rails partials for html。如何檢查用戶是否已登錄javascript

我可以看到cookie在登錄時設置爲chrome,但document.cookie似乎返回空白。原因可能已被解釋here

如何在javascript/erb中實現此目的。

+3

有沒有人真的有這個基於js的答案,不同於下面列出的答案? – lulalala

+0

可能不可能。請參閱http://stackoverflow.com/a/29739169/6594668或使用cookie。 – prograils

回答

2

在後端處理此操作。如果你使用rails這樣做,一定要使用和濫用current_user,因爲它將是你最好的朋友。

在部分

然後,你可以自由地有這樣的事情

<% if current_user %> 
    <p>Welcome <%= current_user.username %>!</p> 
<% else %> 
    <p>Please <%= link_to 'sign in', login_path %></p> 
<% end %> 

Rails的會話,Ruby on Rails Tutorial

+0

謝謝,我想在表單提交中顯示燈箱。這已經在工作。當用戶登錄時,我需要提交原始表單而不需要任何用戶交互。 ajax登錄調用確實添加了一個cookie。通過使用您提到的方法,我將不得不刷新頁面以知道用戶是否已登錄才能提交原始表單。 – ShaggyInjun

+0

刷新頁面時,表單數據將丟失,除非我採用複雜的路徑將表單數據保存到瀏覽器內存,並在頁面加載時填寫表單。 如果我能夠檢查cookie,它會更容易。在項目中啓用休息。有沒有一個設計會議控制器的方法,我可以做一個Ajax調用來驗證用戶登錄? – ShaggyInjun

+0

@ShaggyInjun好吧我想我知道你在問什麼。在隱藏燈箱之前,你是否檢查登錄憑證是否正確?如果是這樣,當你的程序響應(使用AJAX)「是的,這些憑據是正確的,」你也可以發送你想要的用戶數據,然後用JavaScript處理剩餘的數據。也許像'$('#welcome')。text(data.username);',如果你的燈箱是一個形式':remote => true',那麼你可以用'create.js.erb' '應用/視圖/ sessions'。這取決於您的應用程序的結構。 –

相關問題