2012-02-02 43 views
11

Tôi đã làm việc với plugin FullCalendar một chút và tôi đã quản lý để làm cho nó hoạt động trong FF và Chrome nhưng dường như tôi không hiểu tại sao các sự kiện lại không hiển thị trên Safari.Sự kiện FullCalendar không chỉ hiển thị trên Safari

Tôi đang sử dụng chương trình phụ trợ của Rails để tìm nạp các sự kiện dưới dạng mảng. Đây là đối tượng JSON cho các sự kiện mà FireBug hiển thị.

_end: Invalid Date  
_id: "1953" 
_start: Fri Feb 10 2012 00:00:00 GMT+0530 (IST) 
allDay: false 
backgroundColor: "#F60 !important" 
className: Array[0] 
color: "#FFFFFF !important" 
description: "" 
end: Invalid Date 
start: Fri Feb 10 2012 00:00:00 GMT+0530 (IST) 
textColor: "#FFFFFF !important" 
__proto__: Object 

Tôi không gặp lỗi trên bảng điều khiển săn. Ngày kết thúc không hợp lệ hiển thị dưới dạng null trên FF và Chrome.

Sau đây là cách tôi cư các sự kiện

event[:id]      = each_event.id  
event[:title]    = each_event.event_title  
event[:allDay]    = each_event.all_day? 
event[:start]    = each_event.start_time.strftime('%Y-%m-%d %H:%M:00')  
event[:end] = each_event.end_date.to_time.strftime('%Y-%m-%d %H:%M:00') if each_event.end_date.present?   
event[:color]    = '#FFFFFF !important'  
event[:backgroundColor]  = (each_event.user == current_user) ? '#F60 !important' : '#090 !important'   
event[:backgroundColor]  = '#090 !important' unless each_event.private?  
event[:textColor]   = '#FFFFFF !important' 

tôi đã cố gắng chuyển đổi sang định dạng datetime ISO8601 quá và nó đã không làm việc. Tôi hoàn toàn không biết gì về vấn đề này. Tôi thực sự sẽ đánh giá cao một số trợ giúp.

+0

Cùng một vấn đề ở đây. Bạn đã bao giờ quản lý để sửa lỗi này? – melat0nin

+2

Tôi đã sử dụng fullCalendar trong một thời gian bây giờ và cho đến thời điểm này, tất cả các vấn đề tôi gặp phải với Safari là thực tế rằng các ngày tháng được phân tích cú pháp hơi khác một chút. Ví dụ: (Safari 6.0 (7536,25) trên Mac) - ngày mới ('01 -01-2000 ') không hợp lệ như trong các trình duyệt khác, nó hoàn toàn hợp lệ. Trong những trường hợp này, bạn nên thay thế tất cả dấu gạch nối bằng dấu gạch chéo, do đó kết quả sẽ giống như ngày mới ('01/01/2000 '). Tôi hy vọng điều này là hữu ích. – woot

+1

@TomReznik Trong trường hợp của tôi, đó là những sợi dây, và câu hỏi này khiến tôi nhìn vào đúng chỗ. Nhưng nó không phải là dấu gạch ngang vs vấn đề slashes, nó hoạt động hoàn toàn tốt với dấu gạch ngang trong trường hợp của tôi. Thay vào đó là định dạng của ngày, tôi đã xuất ra một chữ số duy nhất (2012-11-1) và số 0 còn thiếu hàng đầu là cái đã ném nó đi. Tôi đoán rằng lỗi này sẽ gặp phải thường xuyên hơn vào cuối năm, tôi chắc chắn tháng này bị lỗi tương tự, nhưng nó không được chú ý trong tháng 10 và tháng 11. – DigitalDesignDj

Trả lời

0

Chuỗi của bạn không có định dạng đúng.

Thay vì sử dụng

event[:start] = each_event.start_time.strftime('%Y-%m-%d %H:%M:00') 
event[:end] = each_event.end_date.to_time.strftime('%Y-%m-%d %H:%M:00') if each_event.end_date.present? 

cố gắng sử dụng

event[:start] = each_event.start_time.to_json 
event[:end] = each_event.end_date.to_time.to_json if each_event.end_date.present? 

Theo tài liệu FullCalendar khi bắt đầu và kết thúc thuộc tính yêu cầu đối tượng ngày hoặc một chuỗi trong định dạng IETF, định dạng ISO8601 hoặc một dấu thời gian UNIX . Bởi vì strftime('%Y-%m-%d %H:%M:00') là không ai trong số đó, mã sẽ không hoạt động.

http://arshaw.com/fullcalendar/docs/event_data/Event_Object/

1

Tôi gặp sự cố tương tự. gì giúp tôi được sử dụng chức năng .iso8601 của DateTime:

event[:start] = each_event.start_time.iso8601 
event[:end] = each_event.end_date.to_time.iso8601 if each_event.end_date.present? 

định dạng ISO8601 cho sản lượng như: 2017-01-25T16: 15: 49 + 01: 00

+0

Câu hỏi cũ, nhưng câu trả lời này có vẻ tốt. Thay đổi từ rfc822 sang iso8601 làm việc cho tôi. –

Các vấn đề liên quan