我已经实现了计数未读数的自动加载。
它返回每15秒未读的消息数。
但是,即使用户没有登录,它也会做同样的事情。
我怎样才能阻止这一切?我想只在用户登录时才这样做。
我有这样的js
jQuery(document).ready(function () {
refreshPartial();
setInterval(refreshingPartial, 15000)
});
function refreshingPartial() {
$.ajax({
url: "/messages/refreshing_partial",
type: "GET",
dataType: "script",
});
}
使用内联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)
};
});
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>