escribo un before_filter así:cómo responder a una llamada Ajax en before_filter
def authenticate_user
if request.xhr?
flash.now[:alert] = 'Error'
render :partial => "js_helpers/popover", :formats => :js
else
authenticate_user!
end
end
Sin embargo, no funciona como se esperaba. El archivo de registro muestra:
Rendered js_helpers/_popover.js.erb (0.1ms)
Filter chain halted as :authenticate_user rendered or redirected
La función del código js es mostrar un bloque de popover que muestra el mensaje flash. pero parece que el código js no está emocionado en absoluto.
Por lo tanto, he cambiado mi manera:
def authenticate_user
if request.xhr?
flash.now[:alert] = 'Error'
render :js => "window.location = '/users/sign_up'"
else
authenticate_user!
end
end
En cambio, quiero volver a dirigir a la página de registro.
Sin embargo, todavía hay problemas. el flash no parece trabajar
¿Cómo puedo lograr mi objetivo:
cuando la petición es una llamada ajax, ejecutar código JavaScript o vienen redirect_to una nueva página. En ambas condiciones, necesito almacenar algunos mensajes en flash.
Además, el código de javascript es muy largo, así que tengo que ponerlo en un archivo. ¿Cómo puedo usar render: js para ejecutar un javascript dentro de un archivo?
Los raíles estándar redirigir no funcionará en una llamada AJAX. – sockmonk