2010-10-26 34 views
6

Tôi đã cập nhật lên Rails 2.3.10, Rack 1.2.1 và hiện tại không có thông báo flash nào của tôi hiển thị. Tôi thấy rằng trong một chuyển hướng thông báo được thông qua tại như thế nàyThông báo flash với redirect_to bị hỏng trong đường ray

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

Và theo quan điểm của tôi băm flash là trống

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

Nhưng bạn có thể thấy thông báo trong bộ điều khiển. Điều gì mang lại?

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

Trả lời

1

Chúng tôi cũng đã thực hiện điều này. Tất cả các tin nhắn flash của chúng tôi biến mất với chuyển hướng, nhưng không phải khi được đặt trong bộ điều khiển một cách rõ ràng.

Không làm việc:

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 

Đây không làm việc:

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

Bạn đã kiểm tra trình theo dõi lỗi đường ray chưa? Tôi vẫn sử dụng setter thời trang cũ flash[:notice] = message và nó hoạt động tốt, do đó, nó có vẻ là một vấn đề phương thức redirect_to.

https://rails.lighthouseapp.com/

Bạn hãy thử redirect_to url, :flash => { :notice => "notice" }, như một tác phẩm xung quanh?

+0

Cảm ơn nhưng tôi đã thử điều đó nhưng có vẻ như phương pháp flash được gọi từ chế độ xem bị hỏng. – jspooner

1

Đây có thể là một vấn đề với các tập tin cookie. Dài câu chuyện ngắn, cookie không nhận được nếu bạn chuyển hướng ngay lập tức sau đó. Giả sử Rails thực hiện flash bằng cookie, chuyển hướng là vấn đề của bạn.

Nguồn:

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

Mã này dưới đây nên làm việc:

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

Tôi đoán điều này là do thay đổi trong Ruby chứ không phải trong Rails, vì nó trông giống như thay đổi ưu tiên phân tích cú pháp trong trình biên dịch.

+0

+1, Điều này làm việc như một sự quyến rũ đối với tôi. – Joe

+3

không hoạt động với tôi –

+1

Nó hoạt động đối với tôi, trong trường hợp của tôi đó là một mô hình 'model_path' trước khi đèn flash gây ra sự cố. – mtrovo

Các vấn đề liên quan