如何在登录时运行setInterval ajax调用?

时间:2012-12-25 14:04:17

标签: ruby-on-rails ruby-on-rails-3 jquery

我已经实现了未读计数的自动重新加载 它每15秒返回一条未读的消息数 但即使用户未登录,它也会一样。

我怎么能阻止这个?我想只在用户登录时才这样做。

我喜欢这个

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


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

2 个答案:

答案 0 :(得分: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 %>

OR

如果用户登录并控制该类,则将一个类添加到正文中。

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

</body>

并改变你的js一点点

jQuery(document).ready(function () {
  if ($("body").is(".signed-in")) { 
    refreshPartial();
    setInterval(refreshingPartial, 15000)
  };
});

答案 1 :(得分:0)

refreshPartial js脚本只有在用户登录时才会呈现。以下应该做的诀窍:

<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>