我试图在我的rails应用程序中的用户之间创建一个低技术消息传递系统。我注意到,莫名其妙地,我的应用加载了随机消息,当我转到另一个链接,然后回到相关页面,即使它完全包裹在一个开启("点击&#34) ;,...)事件。我不知道为什么我的应用程序在我点击任何内容之前加载用户,更不用说为什么它会加载这些看似随机的消息。它就像jQuery只是在加载时自发,但在刷新时表现完美。我有一种感觉,这与我的浏览器缓存或链轮有关。这是我的jQuery:
$(document).ready(function() {
// Just a capitalization helper.
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
// Clears out data and fills in with fresh Ajax
function getMessages () {
$('.message-section').children().remove();
var $senders_id = this.id
$username = $(this).attr( "data-username" )
function messageBuilder(message){
if ($senders_id == message.senders_id){
console.log(message.senders_id);
var $usernameDiv = $('<div class="col-12-xs">From: ' + $username.capitalize() + '</div>');
var $messageDiv = $('<div class="col-12-xs message-div">Message: ' + message.note + '</div>');
var $messageReply = $('<a href="#">Reply</a><hr>');
$('.message-section').append($usernameDiv);
$('.message-section').append($messageDiv);
$('.message-section').append($messageReply);
}
}
$(function() {
$.ajax({
url: '/messages',
method: 'GET',
dataType: 'json',
success: function(data) {
data.forEach(function(message) {
messageBuilder(message);
});
}
});
});
}
// The click event that sets it all off
$('.messages-from').on( "click", getMessages );
});
出于某种原因,除了第一次访问页面外,一切正常。它在刷新或单击有问题的项目时工作正常,但在第一次访问时,它只是对所有消息进行填充。我甚至尝试在文档下面的顶行立即添加它。已经部分:
$('.message-section').children().remove();
这样它就会出现两次,一次点击一次,一次加载后立即......但结果是一样的。当我第一次访问该页面时,同样的奇怪行为,即使我没有点击任何内容,许多消息也会随机从应用程序中咳出来。这是我的application.js的样子:
//= require jquery
//= require jquery_ujs
//= require jquery.turbolinks
//= require turbolinks
//= require bootstrap-sprockets
//= require_tree .
我还注意到,如果我删除document.ready部分并将所有内容放在全局范围内绝对没有任何反应,也许这是一个线索?有什么想法吗?
答案 0 :(得分:0)
可以是turbolinks
。尝试删除它。