2012-05-29 62 views
1

我目前在我的導航區域有一個<ul>,它包含一個<%= render :partial => "sessions/manager" %>,它基本上調用另一個部分,這取決於用戶登錄狀態呈現登錄表單或歡迎聲明。根據登錄狀態更新DIV?

我的登錄部分由ajx驅動,因此自動刷新。這是我使用的代碼。

login.js

$(document).ready(function() { 

    $('form#sign_in').bind('ajax:success', function(e, data, status, xhr) { 
    console.log(data); 
    if(data.success) { 
     $('.user_nav').html(data.content); 
    } else { 
     $('.user_nav').prepend(data.errors.join('<br />')); 
    } 
    }); 

}); 

現在我想包含狀態隱藏或顯示這取決於用戶登錄或者各個環節我的網頁上另一格。

目前我的代碼是這樣的。

<% if(signed_in?) %> 
    <li><%= link_to "Clients", "/clients" %></li> 
    <li><%= link_to "Jobs", "/jobs" %></li> 
<% else %> 
<% end %> 

但是,這是行不通的id如。這些鏈接最初並不是很酷,但是當我登錄時鏈接不會再顯示......除非我進行整頁刷新。

我該如何ajax-ify這一節?

回答

0

改爲使用CSS的可見性屬性,這不太安全,因爲任何人都可以在源代碼中看到鏈接,但會順利運行。

如果在JSP中,嘗試通過該代碼重新加載頁面,如果該頁面看上去像正在登錄一樣正在進行中,同時您的頁面將被刷新。

+0

我將如何使用JavaScript重新加載頁面?我無法重新加載div/li類的項目嗎? – Keva161

+0

整個頁面可以重載多種方式 –

+0

window.location.href =「Type_URL_of_Current_Page」 如果只是HTML的一部分,那麼 –

1

您的示例不起作用,因爲服務器必須再次呈現頁面以傳遞signed_in?

我會建議擺脫ajax登錄,只是做一個正常的提交和重新加載頁面沒有ajax。 如果你仍然想使用Ajax,就使一個頁面重新加載使用JavaScript的可能性:

window.location.href=window.location.href 

window.location.reload() 

但你也可以做一個正常的提交,一切都應該工作精細。

千萬不要這樣做與CSS的知名度!這真的是不安全的,不是一個好的編程行爲。服務器必須驗證並將正確的html發送給用戶,具體取決於他是否已登錄。