2013-03-07 13 views
5

mam realizacji wtyczki jQuery File Upload w Rails 3.2 aplikacji i dostaję komunikat o błędzie:jQuery File Upload Nie można nazwać metodą „_adjustMaxNumberOfFiles” o nieokreślonej

Uncaught TypeError: Cannot call method '_adjustMaxNumberOfFiles' of undefined

Oto kod, który wywołuje _adjustMaxNumberOfFiles:

$(function() { 
    // Initialize the jQuery File Upload widget: 
    $('#fileupload').fileupload(
     { 
     url: '/photos', // post to and retrieve from 
     dataType: 'json' 
     } 
    ); 

    // Load existing files: 
    $.getJSON($('#fileupload').prop('action'), function (files) { 
     var fu = $('#fileupload').data('fileupload'), 
      files = jQuery.grep(files, function (a) { return a.gallery_id == <%= params[:id] %>; }), //filter the photos down to this gallery 
      template; 


     fu._adjustMaxNumberOfFiles(-files.length); 
     template = fu._renderDownload(files).appendTo($('#fileupload .files')); 

     // Force reflow: 
     fu._reflow = fu._transition && template.length && template[0].offsetWidth; 
     template.addClass('in'); 
     $('#loading').remove(); 
    }); 

    }); 

To było całkowicie skuteczne. Przeniosłem się do dalszej pracy nad aplikacją i podczas pracy w środowisku testowym zauważyłem, że otrzymałem powyższy błąd. Wróciłem do dev, żeby sprawdzić, czy to się dzieje i na pewno tak było. Korzystam z klejnotu jquery-fileupload-rails, aby załadować niezbędne pliki do potoku zasobów. Próbowałem nie używać tego klejnotu i ładować wszystkie zasoby ręcznie, a to nie pomaga.

Próbuję przejść przez to w konsoli, ustawiając fu i fu._adjustMaxNumberOfFiles i nadal otrzymuję komunikat o błędzie Cannot call method '_adjustMaxNumberOfFiles' of undefined. Jeśli skomentuję wiersz z _adjustMaxNumberOfFiles, otrzymam ten sam błąd w następnym wierszu, zamiast tego mówię, że _renderDownload jest niezdefiniowany. To tak, jakbym nie mógł uzyskać dostępu do żadnej z metod ustawionych w wtyczce do przesyłania plików jquery, nawet jeśli wszystkie skrypty zostały załadowane. Tutaj są ładowane skrypty w kolejności. Wykluczam pliki js, które nie mają tutaj zastosowania.

<script src="/assets/jquery.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script> 
<script src="/assets/bootstrap.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-fileupload/vendor/jquery.ui.widget.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-fileupload/vendor/load-image.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-fileupload/vendor/canvas-to-blob.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-fileupload/vendor/tmpl.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-fileupload/jquery.iframe-transport.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-fileupload/jquery.fileupload.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-fileupload/jquery.fileupload-fp.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-fileupload/jquery.fileupload-ui.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-fileupload/locale.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-fileupload/index.js?body=1" type="text/javascript"></script> 

Trudno mi się nad tym zastanowić. Każda pomoc będzie doceniona. W razie potrzeby mogę opublikować więcej fragmentów kodu, ale to, co napisałem, jest jedynym JavaScriptem, który nie jest częścią wtyczki do przesyłania plików jQuery.

Odpowiedz

1

Format zwrotu json został zmieniony przez klejnot i nie jest on nigdzie udokumentowany.

Można przyjrzeć się tej kwestii, który jest powiązany z tym samym błędem: https://github.com/tors/jquery-fileupload-rails/issues/30

+1

I potwierdzone blokowanie mojej wersji klejnotu do poprzedniej wersji, 0.4.0 i na pewno to naprawiłem. Zrobię to działając z 0.4.1 teraz. Dzięki! –

+0

@RyanArneson Świetnie! Tak, jeśli znajdziesz dokumentację zawierającą zmiany, zaktualizuj tutaj. – tamizhgeek

5

W uploads_controller tworzyć działania:

format.json { render json: {files: [@upload.to_jq_upload]}, status: :created, location: @upload } 

W swoim JS:

var fu = $('#fileupload').data('blueimpFileupload'); 
+1

Nadal pojawia się błąd dla 'rails 4.2.4' i' jquery-fileupload-rails 0.4.5' po wykonaniu Twojej sugestii –

Powiązane problemy