Estoy creando una aplicación de demostración simple que permite al usuario ingresar su dirección de correo electrónico para registrar su interés en recibir acceso beta. La aplicación luego les envía un correo electrónico de confirmación que les informa que hemos recibido su solicitud. Si alguna vez se inscribió para recibir una notificación de un lanzamiento beta, entonces se entiende la idea.Error al manejar con Ajax en Rails 3
Tengo curiosidad acerca de cómo manejar los errores en Rails 3 mientras uso AJAX. Antes de implementar mi bloque respond_to, tenía un formulario que hacía que los errores compartidos fueran parciales.
Aquí está el formulario.
<% if flash[:notice] %>
<p><%= flash[:notice] %></p>
<% end %>
<p>Sign up to be notified when the beta launches.</p>
<%= form_for @user, :remote => true do |form| %>
<%= render '/shared/errors', :target => @user %>
<%= form.label :email, "Your Email Address" %>
<%= form.text_field :email %>
<%= form.submit "Notify Me" %>
<% end %>
Y aquí están los errores mencionados anteriormente.
<% if target.errors.any? %>
<ul>
<% target.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
<% end %>
Cosas muy estándar. La acción del controlador se ve así.
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to :back, flash[:notice] = "Thanks for your interest! We'll let you know when the app is in beta." }
format.js
else
format.html { render :action => :new }
format.js
end
end
end
Todo funciona perfectamente antes de implementar ajax. Si el formulario pasa la validación, verá el mensaje flash de éxito y, en caso negativo, verá una lista de errores. Entonces, ahora que tengo un archivo create.js.erb, ¿cómo debo manejar los errores sin repetirme o es imposible? Obviamente quiero mantener esto lo más seco posible.
¿Te ayudó esta respuesta? – Techism