2012-01-21 10 views
7

Mam formularz, który chciałbym przesłać z opcją data-remote=true. Ale chcę, aby moja akcja tworzenia zwróciła json, a potem zajmie się tym javascript, który już istnieje na stronie. Czy mogę ustawić wywołanie zwrotne w linii z tagiem form_for?data-remote true definiowanie callback

Coś podobnego do tego:

=form_for @foo,:remote => true, :success => "my_js_stuff" do |f| 

Odpowiedz

9

Nie jestem pewien, czy będzie to możliwe bez przesłonięcia pomocnika. Ale możesz użyć zdarzeń ajax jquery i powiązać je. Na przykład:

$('form#sign-up-form').ajaxError(function(event, request, settings) { 
//do some stuff on error 
}) 

$('form#sign-up-form').bind('ajax:success', function(evt, data, status, xhr){ 
//do some stuff on success 
}) 
5

Będziemy chcieli, aby zdefiniować create.js.erb i/lub update.js.erb dla kontrolera foo. To zwróci javascript, który wykonasz.

Stamtąd można uruchomić javascript, który już istnieje na stronie.

+0

Dobre myślenie. +1 Pomoże to w przypadku sukcesu. Nie pomoże w przypadku błędu. – Hendrik