2011-06-01 10 views
7

Tengo el siguiente en una de mis controladores:respond_with y Flash Aviso

def create 

    photo.user = current_user if current_user 
    flash[:notice] = "The photos was saved" if photo.save 
    respond_with photo, :location => photo_path(photo) 

end 

Este código funciona con una excepción. Si tengo acceso a esta acción con algún tipo de AJAX y luego visito otra página, se mostrará el aviso de flash. ¿Cómo solo puedo mostrar el aviso de flash cuando respondo con: html? Pensé que tal vez podrías pasar un: aviso => ​​"mi flash" al respond_with pero no tuve suerte.

Respuesta

9

Usted puede poner condiciones como:

flash[:notice] = "The photos was saved" if photo.save && !request.xhr? 

Además, si algún día se decidirá uso Aviso generada al responder a la petición AJAX, puede utilizar flash.discard para borrar el flash.

-1

uso de la siguiente manera:

respond_to do |format| 
    format.html { redirect_to photo_path(photo), :notice => 'The photos was saved') } 
    format.xml { render :xml => photo, :status => :created} 
end 
+0

Eso es lo que tenía antes, pero estoy tratando de pasar de 'responder_ a' a la más condensada' responder_con'. –

+0

Tuve que rechazarlo porque la respuesta no intenta responder a la pregunta de los carteles con respecto al uso de 'responder_with'. –

+0

@LesterPeabody pero proporciona una solución. Y la pregunta puede haber sido editada después de la respuesta (aunque no estoy seguro de lo que pasó hace 2 años). No tengo ningún problema con un voto negativo, pero probablemente se debe pensar más antes de ejercitarlo. –

Cuestiones relacionadas