2012-02-25 8 views
7

estoy usando plantillas en línea HAML en mi aplicación Sinatra. Tengo un @@layout con una sección como esta:La actualización de un div con el contenido de Flash [Aviso]: utilizando right.js?

#message 
    - if flash[:notice] 
    %section.notice= flash[:notice] 
    - if flash[:error] 
    %section.error= flash[:error] 

Cuando uso flash[:notice] = "Hola!" en una ruta & clic en un enlace, la página siguiente dice felizmente Hola" en el #message div. grande.

Así que aquí está el problema, estoy usando right.js a añadir un poco de amabilidad ajax a mi aplicación, el comportamiento del estante-flash es inconsistente en el mejor.

mayoría de las veces, hace clic en un enlace (.linkey), un poco de intercepta javascript tI & cargas en un #content div (esta parte funciona tan bien), entonces el ' div #message' se vuelve a cargar & aparece el flash de la acción anterior ... la próxima vez que haga clic en un enlace ... alrededor del 80% de las veces, el resto se muestra el tiempo nada.

Este es mi JS:

"a.linkey".onClick(function(event) { 
    event.stop(); 
    $('content').load([ "/", this.get('id'), ].join("")); 
    $('message').load('/message'); 
}); 

que me gustaría es algo como esto:

1) Haga clic en enlace

2) el destino del enlace (/ foo) se carga en #content

3) #message se vuelve a cargar con el mensaje (de la ruta flash[:notice] = "bar")

4) #content que ahora muestra /foo & #message pantallas "bar"

también he intentado esto con $('message').load('/message'); pero que, o bien las cargas de la nada en #message o rellenos #message con "/ mensaje" (no una cadena de los contenidos).

me gustaría saber lo que está pasando aquí? ¿Es algo con rack-flash o right.js? ¿o algo mas? Puedo proporcionar más código si es necesario, pero realmente no hay mucho más allá del marco básico, ya que estoy empezando en este proyecto.

Respuesta

1

Para peticiones AJAX se ejecutan a través de una acción del controlador, que había necesidad de utilizar flash.now de modo que el mensaje flash estará disponible para la solicitud actual. Entonces en tu caso, flash.now[:notice] = "bar".

Cuestiones relacionadas