2013-02-27 103 views
0

Rails的渲染'功能渲染的東西短時間

render :text => "Some text" 

我真正需要的是這樣的

render :text => "Some text", :duration => 5000 

的「一些文本」將呈現的持續時間短時間,然後它會消失。

如果這是不可能的,我可以使用:alert標籤爲同一件事情,以及如何?

+3

...這需要通過JavaScript處理,在客戶端。但是,您可以通過正常的Rails機制生成該JS。 – 2013-02-27 13:26:34

回答

2

你必須考慮你使用的HTTP是無狀態的。這意味着:客戶端和服務器之間沒有連接。它始終只是:

  • 客戶:您好服務器,請給我http://.../someResource
  • 服務器:這

每次客戶端請求的資源服務器可以不記得他在那裏之前(至少在普通的嚴格HTTP中)。然後有人發明了Sessions和Cookies,但這是一個不同的故事。

我想說的是:服務器只能發送請求的資源,完成後他不知道有客戶端和請求的東西。

動態行爲只有一個選擇:JavaScript(自CSS3起,也應該可以在5000ms後觸發隱藏某個div的動畫)。

現在你必須要考慮:

  • 應在客戶端本身隱藏警告框? (這是使用jQuery最常見和最簡單的方法)
  • 服務器應該告訴客戶端隱藏它嗎? (我知道我上面說過這是不可能的,但實際上它使用的是一個叫做server push的東西,它在一個名爲atmosphere(以前的comet)的庫中實現,但它不是來自服務器的真正消息,而是來自客戶端的第二個請求當發生事件發送給客戶端時(long-pooling),服務器首先得到服務器的響應)。注意:這也需要客戶端的JavaScript。

我會說:與第一種解決方案(jQuery)因爲它已經內置到Rails(至少如果你在Rails的3.1或以上)

看一看這裏:How to hide a div after some time period?