2009-07-22 32 views
17

Tôi không thể tìm ra lý do tại sao thông báo flash của tôi biến mất sau khi redirect_to. Bắt đầu trình gỡ rối trong chế độ xem của tôi và biến flash hoàn toàn trống.Đường ray, mất đèn flash sau khi chuyển hướng_to

flash 
=> {} 

Kết quả tương tự với flash.now ... Nó hoạt động tốt nếu tôi chỉnh sửa nội dung nào đó và gọi kết xuất.

Bộ điều khiển: bố trí

def create 
    @user_session = UserSession.new(params[:user_session]) 
    if @user_session.save 
     flash[:notice] = "Logged in" 
     redirect_to root_url 
    else 
     render :action => 'new' 
    end 
    end 

Ứng dụng:

- flash.each do |name, msg| 
    =content_tag :div, msg, :class => "flash_#{name}" 

root_url là một bộ điều khiển và hành động.

+0

Bạn có đang sử dụng Rails 2.3.2 không? –

+0

và bạn có thể đăng mã cho bộ điều khiển/hành động root_url mà bạn đang chuyển hướng đến không? –

Trả lời

4

Đó là plugin render_component ... nó phá vỡ đường ray 2.3.2. Dù sao cũng cảm ơn bạn.

+1

Tôi đã giải quyết vấn đề này bằng cách nhận xét hai dòng trong mã render_component - dòng có flash.discard và flash.sweep. Tôi không biết đây có phải là giải pháp đúng hay không, nhưng nó cho phép tôi tiến lên phía trước vào lúc này. – Mario

+0

Xin chào, tôi cũng gặp vấn đề tương tự ở đây và bị kẹt trong nửa ngày. Tôi nhấp nháy theo cách này 'redirect_to new_user_session_url (tên miền phụ: @ account.subdomain), chú ý: I18n.t ('accounts.create.success_confirmation ') 'và, tôi đang mất thông báo của tôi trên các phiên/trang mới. Tuy nhiên, khi tôi gỡ lỗi trên bộ điều khiển, tôi thấy đối tượng flash có khóa và giá trị thông báo. Bạn có thể xây dựng thêm về điều render_component mà bạn đã làm không. –

1

nếu bạn đang chuyển hướng đến một sử dụng hành động flash và nếu bạn là làm cho việc sử dụng hành động tương tự flash.now

24

Khi bạn sử dụng đèn flash thông điệp đặc trưng, ​​có hai cách các thông điệp hiển thị:

ngay lập tức vào tải cùng một trang, và dễ tiếp cận trong giao diện từ flash['foo']:

flash.now['foo'] = "Hello world" 

Hoặc trên một chuyển hướng đến một trang khác, và truy cập từ flash['notice']:

redirect_to root_url, notice: "Hello world" 

Các ruby ​​trên đường ray dẫn trang web là một tài liệu tham khảo thực sự tốt:

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

1

đèn flash vẽ của tôi đã không làm việc cho root_url vì định tuyến của tôi. Tôi đã chuyển root_url sang một trang khác, như root: to => redirect ('[SOME_OTHER_PAGE]'). Thay vào đó, tôi chỉ sử dụng redirect_to đến một tài nguyên khác

7

Nếu bạn đang sử dụng chuyển hướng kép (ví dụ: chuyển hướng đến thư mục gốc, sau đó chuyển hướng đến người dùng), bạn cần phải bật đèn flash.

def first_action 
    flash[:notice] = "Logged in" 
    redirect_to root_url 
end 

def second_redirect_action 
    redirect_to current_user, flash: flash 
end 
4

Tôi chỉ chạy vào vấn đề này quá, trong Rails 4, và sau khi đập đầu tôi chống lại máy tính của tôi trong một thời gian, tôi nhận thấy điều này trong Rails bản ghi: Can't verify CSRF token authenticity.

Bị tắt, tôi đã gửi qua biểu mẫu không có mã thông báo CSRF trong đó. Đáng ngạc nhiên, nó vẫn đang gọi phương thức điều khiển của tôi và vẫn đang thực hiện chuyển hướng, nhưng đây là những gì đã ném tất cả mọi thứ ra.

Thêm mã thông báo CSRF vào biểu mẫu của tôi đã sửa nó.

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