1

私は現在<ul>、ナビゲーション領域にを持っています。これは、<%= render :partial => "sessions/manager" %>基本的に別のパーシャルを呼び出し、ユーザーのログインステータスに応じて、ログインフォームまたはウェルカムステートメントのいずれかを表示します。

私のログインセクションは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 />'));
    }
  });

});

ここで、ログインステータスに応じて非表示または表示するさまざまなリンクを含むページ上の別のdivが必要です。

現在、私のコードはこれです。

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

ただし、これはidのようには機能しません。リンクは最初は表示されませんが、サインインしたときにリンクが再び表示されることはありません...ページ全体を更新しない限り。

このセクションをajax化するにはどうすればよいですか?

4

2 に答える 2

1

サーバーがsigned_inを渡すためにページを再度レンダリングする必要があるため、この例は機能しませんか?

ajaxログインを削除し、通常の送信を行って、ajaxなしでページをリロードすることをお勧めします。それでもajaxを使用したい場合は、javascriptを使用してページをリロードする可能性があります。

window.location.href=window.location.href

また

window.location.reload()

ただし、通常の送信を行うこともでき、すべてが正常に機能するはずです。

cssの可視性でこれを行わないでください!これは本当に安全ではなく、プログラミングの動作としては適切ではありません。サーバーは、ユーザーがログインしているかどうかに応じて、正しいhtmlを検証してユーザーに送信する必要があります。

于 2012-05-29T21:28:41.990 に答える
0

代わりにCSSのVisibilityプロパティを使用してください。これは、誰でもソースコードでリンクを見ることができるため、安全性は低くなりますが、スムーズに機能します。

また、JSPの場合は、そのコードを介してページをリロードしてみてください。その中で、サインインのように見える場合は、進行中であり、その間にページが更新されます。

于 2012-05-29T19:57:29.263 に答える