2010-10-19 17 views
5

Dato il seguente comando:Rails 3 - AJAX, risposta JS - come gestire gli errori

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

Qual è la Rails modo di gestire una risposta di errore Js ... posso creare un file .js con un diverso nome del file solo per errori di server?

Aggiungo IF SEI nel file .js?

grazie

risposta

8

E 'stato un po' che questa domanda è stata pubblicata - ma ho appena trascorso un po 'di capire questo fuori & non riusciva a trovare troppo aiuto in questa linea, in modo da:

La soluzione è quella di creare file .js.erb: uno per il successo e uno per il fallimento.

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 

Se sembra che se non si specifica un nome di file, rotaie cercheranno create.js.erb in entrambi i casi (a causa format.js è chiamato da creare). Questo non è eccezionale nel caso di situazioni di successo/errore, perché si desidera un comportamento diverso per ogni scenario, quindi sostituisci i nomi dei file tramite l'attributo: action.

Problemi correlati