Como faço para que meu novo formulário de Devise de registros seja AJAXified?
O que eu quero que aconteça é quando a conta é criada com sucesso, o formulário que foi enviado deve desaparecer e uma mensagem deve aparecer (dependendo do status do registro).
Se foi bem sucedido, eles devem ver um simples "Obrigado. Por favor, verifique seu e-mail."
Se não foi, então eles devem ver uma mensagem apropriada - como "Desculpe, esse e-mail já foi tirado".
Esta é minha 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>
Este é meucreate.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);
});
)}
Mas isso não funciona corretamente. Por exemplo, quando eu pressiono submit e o endereço de e-mail já está no banco de dados - nada acontece.
P.S. Eu sei que se fosse uma forma 'regular', eu fariaformat.js
dentro do controlador que está lidando com este formulário - e elabore os códigos de status e mensagens lá - mas o Devise é uma fera diferente e eu não quero gerar novos controladores e substituir a funcionalidade que eu não deveria, quando não estou totalmente confortável .