Jak uzyskać nowy formularz Devise rejestracji AJAXified?
Chcę, aby konto zostało pomyślnie utworzone, formularz, który został przesłany, powinien zniknąć i powinien pojawić się komunikat (w zależności od statusu rejestracji).
Jeśli się powiedzie, powinni zobaczyć prosty „Dziękuję. Sprawdź swój adres e-mail”.
Jeśli nie, to powinien zobaczyć odpowiedni komunikat - np. „Przepraszamy, ten e-mail został już pobrany”.
To jest moja forma:
<div class="nine columns offset-by-three sign-up-form">
<%= form_for(resource, :as => resource_name, :class => "send-with-ajax", :url => user_registration_path(resource), :validate => true, :html => { :id => 'user_new' }) do |f| %>
<div class="six columns alpha">
<%= f.text_field :email, :placeholder => "[email protected]", :input_html => {:autofocus => true}, :validate => true %>
</div>
<div class="three columns sign-up alpha">
<%= f.submit :label => "Submit", :value => "Sign Me Up!" %>
<div class="ajax-response"><%= devise_error_messages! %></div>
</div>
<% end %>
</form>
</div>
To jest mójcreate.js.erb
:
$(document).ready(function() {
$('#user_new').submit(function() {
$(this).fadeOut(600).hide();
$(this).append('<h3>Thank You. You should receive an email shortly.</h3>').fadeIn(1000);
});
)}
Ale to nie działa poprawnie. Na przykład po naciśnięciu przycisku Wyślij, a adres e-mail jest już w bazie danych - nic się nie dzieje.
P.S. Wiem, że gdyby to była „regularna” forma, zrobiłbym toformat.js
w kontrolerze obsługującym ten formularz - i opracuj tam kody statusu i wiadomości - ale Devise jest inną bestią i nie chcę generować nowych kontrolerów i zastępować funkcjonalności, których nie powinienem, gdy nie jestem w pełni komfortowy .