1

未読のカウント数の自動リロードを実装しました。
15秒ごとに未読のメッセージの数を返します。
ただし、ユーザーがサインインしていない場合でも同じことを行います。

どうすればこれを止めることができますか?ユーザーがサインインしているときにのみそれを実行したいと思います。

私はこのようなjsを持っています

jQuery(document).ready(function () {
    refreshPartial();
    setInterval(refreshingPartial, 15000)
});


function refreshingPartial() {
  $.ajax({
    url: "/messages/refreshing_partial",
    type: "GET",
    dataType: "script",
  });
}
4

2 に答える 2

3

インラインjsを使用する

<% if current_user %>
    <%= javascript_tag do %>
        jQuery(document).ready(function () {
            refreshPartial();
            setInterval(refreshingPartial, 15000)
        });


        function refreshingPartial() {
          $.ajax({
            url: "/messages/refreshing_partial",
            type: "GET",
            dataType: "script",
          });
        }
    <% end %>
<% end %>

また

ユーザーがサインインしてクラスを制御している場合は、bodyにクラスを追加します。

<body class="<%= "logged-in" if current_user %>">

</body>

jsを少し変更します

jQuery(document).ready(function () {
  if ($("body").is(".signed-in")) { 
    refreshPartial();
    setInterval(refreshingPartial, 15000)
  };
});
于 2012-12-25T14:26:03.470 に答える
0

jsスクリプトはrefreshPartial、ユーザーがサインインしている場合にのみレンダリングする必要があります。次のトリックを実行する必要があります。

<script type="text/javascript">
    $(document).ready(function () {
        <% if is_user_signed_in %>
            refreshPartial();
            setInterval(refreshingPartial, 15000);

            function refreshingPartial() {
                $.ajax({
                        url: "/messages/refreshing_partial",
                        type: "GET",
                        dataType: "script",
                });
            }
        <% end %>
    });
</script>
于 2012-12-25T14:29:29.297 に答える