2010-10-26 10 views
6

He actualizado a Rails 2.3.10, Rack 1.2.1 y ahora ninguno de mis mensajes flash se muestran. He encontrado que durante una redirección la notificación se pasa como estoAviso de destello con redirect_to está roto en los raíles

redirect_to(@user, :notice => "Sorry there was an error") 

Y en mi opinión, el hash del flash está vacía

<%= debug flash %> 
!map:ActionController::Flash::FlashHash {} 

pero se puede ver el mensaje en el controlador. ¿Qué ofrece?

 <%= debug controller.session %> 
     session{:home_zip=>"94108", :session_id=>"xxx", :flash=>{:notice=>"Sorry there was an error"}, :user_credentials=>"1baf9c9c0423ce0151ec32e24cc422f07309e4ba503eb4830635ecc115da217809997324374bb273b3fb792895c9741a8b8c9ea4267771a1bd149de5b9179ea0", :user_credentials_id=>22, :home_market_id=>11} 
     Edit Profile  

Respuesta

1

Acabamos de toparnos con esto también. Todos nuestros mensajes flash desaparecen con la redirección, pero no cuando se configuran explícitamente en el controlador.

no funciona:

def create 
    if @obj.save 
     flash[:notice] = "The #{cname.humanize.downcase} has been created." 
     redirect_back_or_default redirect_url 
    else 
     render :action => 'new' 
    end 
    end 

Esto funciona:

def show 
    @user = current_user 
    flash[:notice] = "Hello -- this will show up fine" 
    end 
4

¿Revisó el rails bug tracker? Todavía uso el setter antiguo flash[:notice] = message y funciona bien, por lo que parece ser un problema de método redirect_to.

https://rails.lighthouseapp.com/

¿Usted intentó redirect_to url, :flash => { :notice => "notice" }, como un trabajo alrededor?

+0

Gracias, pero lo intenté también, pero parece que el método flash que se llama desde la vista está roto. – jspooner

4

El código siguiente debería funcionar:

redirect_to(@user, {:notice => "Sorry there was an error"})

supongo esto es debido a los cambios en Ruby y no en los carriles, porque se ve como un cambio de prioridad de análisis token en el compilador.

+0

+1, Esto funcionó como un encanto para mí. – Joe

+3

no funcionó para mí –

+1

Me funcionó, en mi caso era un 'model_path model' antes del flash que causaba el problema. – mtrovo

Cuestiones relacionadas