Rails的渲染'功能渲染的东西短时间
问题描述:
render :text => "Some text"
我真正需要的是这样的
render :text => "Some text", :duration => 5000
的“一些文本”将呈现的持续时间短时间,然后它会消失。
如果这是不可能的,我可以使用:alert
标签为同一件事情,以及如何?
答
你必须考虑你使用的HTTP是无状态的。这意味着:客户端和服务器之间没有连接。它始终只是:
- 客户:您好服务器,请给我
http://.../someResource
- 服务器:这
每次客户端请求的资源服务器可以不记得他在那里之前(至少在普通的严格HTTP中)。然后有人发明了Sessions和Cookies,但这是一个不同的故事。
我想说的是:服务器只能发送请求的资源,完成后他不知道有客户端和请求的东西。
动态行为只有一个选择:JavaScript(自CSS3起,也应该可以在5000ms后触发隐藏某个div的动画)。
现在你必须要考虑:
- 应在客户端本身隐藏警告框? (这是使用jQuery最常见和最简单的方法)
- 服务器应该告诉客户端隐藏它吗? (我知道我上面说过这是不可能的,但实际上它使用的是一个叫做
server push
的东西,它在一个名为atmosphere
(以前的comet
)的库中实现,但它不是来自服务器的真正消息,而是来自客户端的第二个请求当发生事件发送给客户端时(long-pooling
),服务器首先得到服务器的响应)。注意:这也需要客户端的JavaScript。
我会说:与第一种解决方案(jQuery
)因为它已经内置到Rails(至少如果你在Rails的3.1或以上)
...这需要通过JavaScript处理,在客户端。但是,您可以通过正常的Rails机制生成该JS。 – 2013-02-27 13:26:34