** Edytował ten post, ponieważ znalazłem problem jest naprawdę w niezdolności szyn do powiązania z ajax: funkcja sukcesu.jQuery wiążą ajax: sukces nie działa w szynach 3 aplikacja dla nowo utworzonych (ajax) przedmiotów
*** Korzystanie szyny 3.2.3
Dzięki za poświęcenie czasu na przeczytanie i starają się pomóc.
dodaję prosty zanikanie funkcji na AJAX: Sukces elementu przed usunięciem, jak następuje:
$(document).ready(jQuery(function($) {
$('.delete').bind('ajax:success', function() {
$(this).closest('div').fadeOut();
});
}));
#For some reason had to pass the $ into the function to get it to work,
#not sure why this is necessary but doesn't work unless that is done.
Po tym, chciałem stworzyć obiekt o niezauważalnych jQuery, gdy użytkownik dodaje coś i mam również działające przyciski usuwania. Zrobiłem plik create.js.erb, który jest wywoływany po utworzeniu nowego elementu - a tworzenie działa dobrze, ale przycisk usuwania nie może uzyskać dostępu do zdarzenia ajax: success.
Usuwa dane z bazy danych po kliknięciu, ale znak .fadeOut nigdy nie jest związany z nią, więc nie znika. Create.js.erb jest następujący:
#$("div").append(html) here, then call the function below to try and bind the ajax:success function
$('.delete').bind('ajax:complete', function() {
$(this).closest('div').fadeOut();
});
Jeśli zmienię to wiązać z funkcją click, to działa, ale to nie uwzględnia nieudanego wywołania ajax:
#$("div").append(html) here, then call the function below to try and bind the ajax:success function
$('.delete').bind('click', function() {
$(this).closest('div').fadeOut();
});
Tak więc coś musi być z wiązaniem z ajaxem: sukces po utworzeniu elementu. Czy macie jakiś pomysł, dlaczego tak się dzieje? Czy muszę zrobić coś specjalnego w szynach, aby nowo renderowany element rozpoznał zdarzenia ajaxowe? Każdy kierunek byłby mile widziany!
P.S. Sterownik dla metody usuwania jest niższa w przypadku gdy ktoś może być w stanie wykryć problem istnieje:
def destroy
@user = User.find(params[:user_id])
@item = @user.item.find(params[:id])
@item.destroy
respond_to do |format|
format.html { redirect_to user_path(@user) }
format.json { head :no_content }
format.js { render :nothing => true }
end
end
Czy to Rails 3.0.x lub 3.1/3.2 app? – ScottJShea
Rails 3.2.3 to wersja, której używam. Jest bardzo bardzo możliwe, że właśnie piszę kod źle, ale ponieważ zapytałeś, która wersja szyn, muszę zapytać, czy znasz błąd podobny do tego we wcześniejszych wersjach szyn lub czegoś podobnego? – Anthony
Czasami ludzie będą mieli jQuery i prototyp aktywny w tym samym projekcie. Dzieje się częściej z Railsami 3.0.x. Teraz, gdy znów na to patrzę możesz chcieć przenieść drugie wiązanie ('bind_delete_animation') do' document.ready' zamiast do funkcji wywoływanej z 'document.ready'. Nigdy nie odniosłem sukcesu, gdy bind jest poza dokumentem. – ScottJShea