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

refreshPartialjs 脚本只有在用户登录时才会呈现。以下应该可以解决问题:

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