2015-05-08 19 views
1

我想讓qtip與rails FullCalendar一起工作,但在設置qtip時一直沒有能夠通過錯誤「不是函數」 。我只是回到Jquery/Rails,顯然這通常是一個js文件加載問題。但是,它似乎像js文件正在正確加載(按正確的順序,只有一次)。這裏是(我的js文件的一部分):jquery qtip「不是一個函數」 - Ruby on Rails

<script src="/assets/jquery.self-d03a5518f45df77341bdbe6201ba3bfa547ebba8ed64f0ea56bfa5f96ea7c074.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/jquery_ujs.self-8e98a7a072a6cee1372d19fff9ff3e6aa1e39a37d89d6f06861637d061113ee7.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/jquery.qtip.self-c86ab2c0151d0748df498fc4603ec759f565e7966405872bad084728da15c92c.js?body=1" data-turbolinks-track="true"></script> 

在我看來,像js文件加載正常。我把日曆中的application.js現在:

//= require jquery 
//= require jquery_ujs 
//= require jquery.qtip.js 

$(document).ready(function(){ 
    $("#calendar").fullCalendar({ 
     eventSources : [{ 
      url: 'url_to_get_data' 
     }], 
     eventLimit: true, 
     eventRender: function(event, element) { 
      element.qtip({ 
       content: event.description 
      }); 
     } 
    }); 
}); 

我從FullCalendar's eventRendering section直拉這個eventRender例子。即使我嘗試在input上輸入qtip,這也不起作用。

任何人都看到明顯的錯誤?

+1

我看到你從[FullCalendar文檔]複製的代碼(http://fullcalendar.io/docs/event_rendering/eventRender/)。瞭解它在文檔中給出了一個很好的機會,它是有效的。請將所有相關的詳細信息添加到問題中,即使這只是鏈接。 –

+0

試過 - '$(element).qtip(...)'引發同樣的錯誤 - 「Uncaught TypeError:$(...)。qtip不是函數。」 –

回答

1

最後只是解決了這個問題,所以想發表任何具有相同問題的人的答案。事實證明,我必須下載The Qtip .js file並將其放置在assets/javascripts中,並且仍將其包含在application.js文件中。我想我錯誤地認爲鐵軌會爲我做這個。

不知道它的問題,但我需要語句的順序是這樣的:

//= require jquery2 
//= require jquery_ujs 
//= require moment 
//= require fullcalendar 
//= require jquery.qtip.js 

最後一件事 - 我也必須從original example修改代碼。這裏是我修改後的代碼,檢查空值:

$(document).ready(function(){ 
    $("#calendar").fullCalendar({ 
     eventSources : [{ 
      url: 'url_to_get_data' 
     }], 
     eventLimit: true, 
     eventRender: function(event, element) { 
      if (element && event.description) { 
      element.qtip({ 
       content: event.description, 
       hide: { 
        fixed: true, 
        delay: 500 
       } 
      }); 
     } 
     }, 
     eventClick: function(calEvent, jsEvent, view) { 
      // Open in new window 
      url = window.location.href; 
      window.open(url + "/" + calEvent.id); 
     }, 
     eventMouseover: function(event, jsEvent, view) { 
      // Todo 
     }, 
     eventMouseout: function(event, jsEvent, view) { 
      // Todo 
     }, 
    }); 
});