0

我一直在关注driftingruby 的交互式日历教程,但遇到了问题。

日历显示正常,但是当我在日期范围内拖动以输入事件时,没有任何反应,谁能提供一些见解?

https://www.driftingruby.com/episodes/fullcalendar-events-and-scheduling

以下是我认为问题所在的所有javascript文件。

//daterangepicker.js

    var date_range_picker;
date_range_picker = function() {
  $('.date-range-picker').each(function(){
    $(this).daterangepicker({
        timePicker: true,
        timePickerIncrement: 30,
        alwaysShowCalendars: true
    }, function(start, end, label) {
      $('.start_hidden').val(start.format('YYYY-MM-DD HH:mm'));
      $('.end_hidden').val(end.format('YYYY-MM-DD HH:mm'));
    });
  })
};
$(document).on('turbolinks:load', date_range_picker);

//fullcalendar.js

   var initialize_calendar;
initialize_calendar = function() {
  $('.calendar').each(function(){
    var calendar = $(this);
    calendar.fullCalendar({
      header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek,agendaDay'
      },
      selectable: true,
      selectHelper: true,
      editable: true,
      entryLimit: true,
      entrys: '/entrys.json',

      select: function(start, end) {
        $.getScript('/entrys/new', function() {
          $('#entry_date_range').val(moment(start).format("MM/DD/YYYY HH:mm") + ' - ' + moment(end).format("MM/DD/YYYY HH:mm"))
          date_range_picker();
          $('.start_hidden').val(moment(start).format('YYYY-MM-DD HH:mm'));
          $('.end_hidden').val(moment(end).format('YYYY-MM-DD HH:mm'));
        });

        calendar.fullCalendar('unselect');
      },

      entryDrop: function(entry, delta, revertFunc) {
        entry_data = { 
          entry: {
            id: entry.id,
            start: entry.start.format(),
            end: entry.end.format()
          }
        };
        $.ajax({
            url: entry.update_url,
            data: entry_data,
            type: 'PATCH'
        });
      },

      entryClick: function(entry, jsEvent, view) {
        $.getScript(entry.edit_url, function() {
          $('#entry_date_range').val(moment(entry.start).format("MM/DD/YYYY HH:mm") + ' - ' + moment(entry.end).format("MM/DD/YYYY HH:mm"))
          date_range_picker();
          $('.start_hidden').val(moment(entry.start).format('YYYY-MM-DD HH:mm'));
          $('.end_hidden').val(moment(entry.end).format('YYYY-MM-DD HH:mm'));
        });
      }
    });
  })
};
$(document).on('turbolinks:load', initialize_calendar);

//创建.js.erb

 $('.calendar').fullCalendar(
  'renderEntry', 
  $.parseJSON("<%=j render(@entry, format: :json).html_safe %>"),
  true
);
$('.modal').modal('hide');

提前致谢。

编辑

日志

Started GET "/entries/new?_=1490713885661" for ::1 at 2017-03-28 17:06:42 +0100
Processing by EntriesController#new as JS
  Parameters: {"_"=>"1490713885661"}
  Rendered entries/_form.html.erb (79.1ms)
  Rendered entries/_new.html.erb (116.2ms)
  Rendered entries/new.js.erb (152.2ms)
Completed 500 Internal Server Error in 207ms (ActiveRecord: 0.0ms)

ActionView::Template::Error (undefined method `entries_index_path' for #<#<Class:0xa441290>:0xb949cc0>):
    1: <%= simple_form_for @entry, remote: true do |f| %>
    2:   <div class="form-inputs">
    3:     <%= f.input :title %>
    4:     <%= f.input :date_range, input_html: { class: "form-control input-sm date-range-picker" } %>
  app/views/entries/_form.html.erb:1:in `_app_views_entries__form_html_erb__139031211_82152084'
  app/views/entries/_new.html.erb:9:in `_app_views_entries__new_html_erb__484549457_82186272'
  app/views/entries/new.js.erb:1:in `_app_views_entries_new_js_erb___326163301_82413240'


  Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.2.6/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb (0.0ms)
  Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.2.6/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb (0.0ms)
  Rendered C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/actionpack-4.2.6/lib/action_dispatch/middleware/templates/rescues/template_error.text.erb (184.7ms)


Started GET "/entries" for ::1 at 2017-03-28 17:09:32 +0100
Processing by EntriesController#index as HTML
  Rendered entries/index.html within layouts/application (0.0ms)
Completed 200 OK in 11569ms (Views: 11490.7ms | ActiveRecord: 0.0ms)


Started GET "/assets/full_calendar.self-00580e852972f09c2aafa7b73a6879781e2d49850519270086ca7b642f5a1ddd.js?body=1" for ::1 at 2017-03-28 17:09:45 +0100
  [1m[36mActiveRecord::SchemaMigration Load (0.0ms)[0m  [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
  [1m[35mActiveRecord::SchemaMigration Load (0.0ms)[0m  SELECT "schema_migrations".* FROM "schema_migrations"


Started GET "/entries" for ::1 at 2017-03-28 17:15:41 +0100
  [1m[36mActiveRecord::SchemaMigration Load (1.0ms)[0m  [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
Processing by EntriesController#index as HTML
  Rendered entries/index.html within layouts/application (60.1ms)
Completed 200 OK in 58260ms (Views: 57678.1ms | ActiveRecord: 0.0ms)


Started GET "/entries" for ::1 at 2017-03-28 17:33:55 +0100
  [1m[36mActiveRecord::SchemaMigration Load (2.0ms)[0m  [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
Processing by EntriesController#index as HTML
  Rendered entries/index.html within layouts/application (97.1ms)
Completed 200 OK in 12627ms (Views: 12437.6ms | ActiveRecord: 0.0ms)


Started GET "/entries" for ::1 at 2017-03-28 17:36:52 +0100
Processing by EntriesController#index as HTML
  Rendered entries/index.html within layouts/application (0.0ms)
Completed 200 OK in 2538ms (Views: 2535.8ms | ActiveRecord: 0.0ms)
4

1 回答 1

0

在这里查看您的 Rails 控制台日志会很有用,因为它会告诉您 JS 是否完全触发了请求,以及它的去向。

这一点看起来有点可疑:

$.getScript('/entrys/new', function()

您正在做GET /entrys/new,但已create.js.erb在问题中提供了您的代码。

你的意思是POST /entrys代替吗?

于 2017-03-28T15:58:28.490 回答