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.
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! –
@RyanArneson Świetnie! Tak, jeśli znajdziesz dokumentację zawierającą zmiany, zaktualizuj tutaj. – tamizhgeek