2011-10-07 9 views
5

tengo este código:rieles de flash: aviso no trabajar

def create 
    login(params[:email], params[:password]) 

    if current_user 
    flash[:notice] = "Welcome back #{current_user.email}" 
    return redirect_to_first_page 
    else 
    flash[:notice] = "Email or password is wrong. Try again !" 
    redirect_to root_url 
    end 
end 

cuando el inicio de sesión tiene éxito, el flash se ajusta y se hace la redirección a la primera página. Esta parte está funcionando. La segunda parte no está configurando el mensaje de aviso de flash. Luego, cuando se muestra la página, no se muestra ningún mensaje del flash. Lo que es diferente, trato de tener

return redirect_to root_url 

pero nada todavía no muestra nada. En mi controlador tengo un helper como flash_notice, todo lo que hace es devolver el flash [: notice]. Esto se debe a que el flash siempre está vacío en una vista pero accesible en el controlador. En la vista que tengo una sola línea:

<%= flash_notice %> 

estoy usando carriles de 3.1

+0

¿Tiene 'root_url redirect_to,: Aviso => ​​"El correo electrónico o la contraseña es incorrecta Inténtelo de nuevo."' Funciona? – Zabba

+0

No. Tiene el mismo comportamiento. – Mihai

+0

Utilice únicamente 'notice' en lugar de' flash_notice' – Hock

Respuesta

7

Chris Drappier es correcta, el hash de destello que es actual para una sola petición. Puede invocar un método de "mantener" con

flash.keep[:notice]="This message will persist"

Personalmente, me gusta mantener el flash en cuestión en params cuando sea necesario. Los detalles morbosos están aquí:

http://guides.rubyonrails.org/action_controller_overview.html#the-flash