-6

私は何ヶ月も Rails アプリに取り組んできました。今日、ローカルホストでアプリを実行すると、jquery が各ページで 2 回実行されているようです。

iMac で実行しています。

いくつかの症状は次のとおりです。

  1. DataTables は、「DataTables を初期化できません」と言っています
  2. フル カレンダーでは、ページに 1 つではなく 2 つのカレンダーが表示されます
  3. ブートストラップのドロップダウン メニューが機能しない

それは本当に私を困惑させました!!!

助けてくれてありがとう!

更新1

Rails Virtual Server に Cap Deploy すると、同じアプリが正常に動作します。つまり、私の iMac 環境に関係があるように思えます。

どのコードを表示すればよいかわかりません。jquery/javascript コードは、上記のすべての数字の例で 2 回起動するように見えるためです。

カレンダーのビュー コードは次のとおりです (カレンダーはページに 2 回表示されます)。

<h2><%= current_user.employee.employee_full_name %> - Labor Month</h2>
<%= content_tag "div", id: "calendar", data: {employeeid: current_user.employee.id} do %>
<% end %>

そしてコーヒースクリプト:

$(document).ready ->

$('#calendar').fullCalendar
  ignoreTimezone: true,
  editable: true,
  defaultView: 'month',
  height: 500,
  slotMinutes: 30,
  selectable: true,
  selectHelper: true,

select: (start, end, allDay) ->
  title = $("#title")
  description = $("#description")
  hours = $("#hours")
  workorder = $("#workorder_id")
  actcode = $("#actcode_id")
  $("#dialog-form").dialog
    autoOpen: true
    height: 500
    width: 400
    modal: true
    buttons:
     "Create Labor": ->
       $.create "/events/",
         event:
           workorder_id: workorder.val(),
           actcode_id: actcode.val(),
           title: title.val(),
           description: description.val(),
           hours: hours.val()
           starts_at: "" + start,
           ends_at: "" + end,
           all_day: allDay,
           employee_id: $('#calendar').data('employeeid')
       $('#calendar').fullCalendar('refetchEvents')
       $(this).dialog "close"

      Cancel: ->
        $(this).dialog "close"

eventSources: [{
  url: '/events',
}],

timeFormat: 'h:mm t{ - h:mm t} ',
dragOpacity: "0.5"

eventDrop: (event, dayDelta, minuteDelta, allDay, revertFunc) ->
  updateEvent(event);

eventResize: (event, dayDelta, minuteDelta, revertFunc) ->
  updateEvent(event);

updateEvent = (the_event) ->
  $.update "/events/" + the_event.id,
    event:
      title: the_event.title,
      starts_at: "" + the_event.start,
      ends_at: "" + the_event.end,
      description: the_event.description

更新3

Some gems I'm using related to javascript:
gem 'twitter-bootstrap-rails'
gem 'jquery-rails'
gem 'fullcalendar-rails'
gem 'jquery-rest-rails'
gem 'gmaps4rails'
gem 'bootstrap-editable-rails'
gem 'jquery-datatables-rails'
gem 'jqtree-rails'

更新4

Chrome の検査要素を確認する必要があるものはありますか?

更新5

@abhi と Wizard of Ogz は、公開アセットを削除するか、これを development.rb = config.assets.debug = false に入れてみるように言いました。この行を development.rb に追加すると、エラーはなくなりました。

今、私は次に何をすべきかわかりません。アセットをデバッグできるようにしたいと考えています。

4

1 に答える 1

0

最近ターボリンクに切り替えましたか?この種の問題に対処する宝石があります。(jquery.turbolinks)

jQuery Turbolinksを使用した後にいくつかのイベントが複数回発生していることがわかった場合は、$(function())ブロック内でドキュメントイベントをバインドしている可能性があります。たとえば、以下のこの例はよくあることであり、避ける必要があります。

/* BAD: don't bind 'document' events while inside $()! */
$(function() {
 $(document).on('click', 'button', function() { ... })
});

https://github.com/kossnocorp/jquery.turbolinks#troubleshooting

ただし、詳細とコードを提供して、質問を改善することを検討する必要があります。

于 2013-03-08T14:51:15.230 に答える