2011-03-15 15 views
5

Tengo un proyecto que usa Sinatra para páginas estáticas y Rails para la aplicación.¿Es posible pasar un mensaje flash de Rails a Sinatra?

que permiten la solicitud para golpear una o la otra al hacer esto en config.ru:

run Rack::Cascade.new([ 
    EightyEightTactical::Root, 
    EightyEightTactical::Application 
]) 

Dónde EightyEightTactical::Root es una subclase de Sinatra::Base y EightyEightTactical::Application es una subclase de Rails::Application.

Estoy en una situación delicada en la que necesito configurar un mensaje flash en un controlador Rails y mostrarlo en un diseño Sinatra.

Me di cuenta de que Rails usa ActionDispatch::Flash en middleware, pero parece que no puedo entender cómo acceder a los mensajes flash fuera de una aplicación de Rails. ¿Estoy equivocado, o se puede hacer esto?

Respuesta

3

Asumiendo que utiliza un almacén de sesiones de cookies, puede hacer lo siguiente:

1) Acceda a la cookie de sesión con el nombre especificado en config/initializers/session_store.rb.

2) descifrar la cookie de sesión para obtener la sesión de hash

3) accede a la clave llamada flash que contiene un hash.

4) Iterar y mostrar el mensaje flash. Para obtener más información, consulte la clase ActionController::Session::CookieStore.

+1

[Aquí está el código] (https://gist.github.com/873195) para cualquier otra persona que esté interesada. –

+0

Quería proporcionar un ejemplo de código similar al suyo para referencia, pero me puse perezoso :-). –

Cuestiones relacionadas