2010-10-19 22 views
5

Dado el siguiente controlador:Carriles 3 - AJAX, la respuesta JS - cómo controlar los errores

def create 
     if @mymodel.save 
     format.js 
     else 
     format.js { render :js => @mymodel.errors } 
     end 
end 

¿Qué hay de los rieles manera de manejar una respuesta de error .JS ... puedo crear un archivo .js con una diferente nombre de archivo solo para servering ¿Errores?

¿Debo agregar un IF ELSE en el archivo .js?

gracias

Respuesta

8

Ha pasado un tiempo desde que esta pregunta fue publicada - pero yo acabamos de pasar un rato calcular esto & no pudo encontrar mucha ayuda en esta línea, por lo que:

la solución es crear archivos .js.erb, uno para el éxito y otro para el fracaso.

def create 
    @foo = Foo.new(params[:foo]) 
    if @foo.save 
     respond_to do |format| 
      format.html { redirect_to root_path } 
      format.js { render :action => "success"} #rails now looks for success.js.erb 
     end 
    else 
     respond_to do |format| 
     format.html { render :action => 'new'} 
     format.js { render :action => "failure"} #rails now looks for failure.js.erb 
     end 
    end 
    end 
end 

Si parece que si no se especifica un nombre de archivo, rieles buscarán create.js.erb en ambos casos (porque format.js se llama de crear). Esto no es bueno en el caso de situaciones de éxito/error porque desea un comportamiento diferente para cada escenario, por lo tanto, anule los nombres de archivo a través del atributo: acción.

Cuestiones relacionadas