fullCalendar' refetchEvents'不刷新数据

时间:2014-10-08 16:10:56

标签: javascript jquery ruby-on-rails fullcalendar

我在rails应用程序上工作,每个用户都有一个个人日历。我使用fullCalendar.js。它在calendar.html.erb上加载,在dayClick()上我添加了一个函数来打开包含表单的iframe。这是代码:

<div class="container" id="calendar-cnt">
  <%= render partial: 'calendar' %>
</div>

<script>
$( document).ready( function(){
    $('#calendar').fullCalendar( {
        events: '<%=escape_javascript @user_calendar_url %>',
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay' },
        dayClick: function(startDate) {
            ifrm = document.createElement("IFRAME");
            ifrm.setAttribute("src", "<%=escape_javascript @user_calendar_url %>" + "/new?date=" + startDate);
            ifrm.style.width = 600+"px";
            ifrm.style.height = 500+"px";
            $('#iframe').append(ifrm);
            ifrm.addEventListener( "close", function() {
                $('#calendar').fullCalendar( 'refetchEvents' );
            }, false );
        }
    } );
});

用户在iframe上创建填写表单的新事件。这工作正常。 我的控制器创建了动作:

def create
  @appointment = @user.appointments.build(appointment_params)
  respond_to do |format|
    format.js
  end
end 

问题在于渲染。日历应通过刷新事件源立即显示已创建的事件。但这不起作用。它仅通过刷新页面显示新事件。 我尝试在create.js上添加代码:

$('#iframe', window.parent.document).empty();
$('#calendar', window.parent.document).fullCalendar( 'refetchEvents' );

还有在events / new.html.erb中:

<script>
  $(window).unload(function(){
      $('#calendar', window.parent.document).fullCalendar( 'refetchEvents' );
  });
</script>

我不是.js专家,所以我很欣赏这个主题的任何见解。 感谢

0 个答案:

没有答案