jQuery在首页访问时自发加载,但不在rails app中刷新

时间:2015-06-27 01:04:16

标签: jquery ruby-on-rails

我试图在我的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部分并将所有内容放在全局范围内绝对没有任何反应,也许这是一个线索?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

可以是turbolinks。尝试删除它。