2010-10-26 10 views
6

Zaktualizowałem do Rails 2.3.10, Rack 1.2.1, a teraz żadna z moich wiadomości flashowych nie jest wyświetlana. Okazało się, że podczas przekierowania zawiadomienie jest przekazywane w jak tenPowiadomienie o błędzie z przekierowaniem jest uszkodzone w szynach

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

I moim zdaniem hash flash jest pusty

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

Ale można zobaczyć wiadomość w kontrolerze. Co daje?

 <%= 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  

Odpowiedz

1

Po prostu w to wpadliśmy. Wszystkie nasze wiadomości flash znikają z przekierowaniem, ale nie w przypadku jawnego ustawienia w kontrolerze.

nie działa:

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 

to działa:

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

Czy sprawdzić szyny bug tracker? Nadal używam staroświecki setter flash[:notice] = message i działa dobrze, więc wydaje się, że jest to problem z metodą przekierowania.

https://rails.lighthouseapp.com/

Próbowałaś redirect_to url, :flash => { :notice => "notice" }, jak obejść?

+0

Dzięki, ale spróbowałem, ale wygląda na to, że metoda flashowa wywołana z widoku jest zepsuta. – jspooner

1

To może być problem z plików cookie. Krótko mówiąc, ciasteczka nie dostaną się, jeśli zaraz przekierujesz. Zakładając, że Rails implementuje flash przy użyciu plików cookie, przekierowanie jest Twoim problemem.

Źródła:

http://persistall.com/archive/2008/01/25/cookies--redirects--nightmares.aspx http://stackoverflow.com/questions/1621499/why-cant-i-set-a-cookie-and-redirect

4

Poniższy kod powinien działać:

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

zgaduję jest to spowodowane zmianami w Ruby i nie w szynach, bo wygląda na to, symboliczną zmianą priorytetu parsowanie w kompilator.

+0

+1, To działało jak urok dla mnie. – Joe

+3

nie działa dla mnie –

+1

To działało dla mnie, w moim przypadku był to model 'model_path' przed lampą błyskową, która była przyczyną problemów. – mtrovo

Powiązane problemy