2013-02-27 73 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?