在 Ruby on Rails 3.2+ 中流式传输部分视图

Posted

技术标签:

【中文标题】在 Ruby on Rails 3.2+ 中流式传输部分视图【英文标题】:stream partial views in Ruby on Rails 3.2+ 【发布时间】:2012-04-16 21:43:22 【问题描述】:

我正在寻找一种在 Rails 3.2+ 中流式传输部分视图的方式。目前仅支持通过 provide 从模板中生成布局中的部分。 但是假设我在博客页面上有 n 篇文章,每篇文章都是在大约 300 毫秒内部分生成的(请不要问为什么这么长),我希望用户立即开始阅读第一篇文章准备好了。

现在可以在rails中使用吗?有没有办法像 php 一样显式“刷新”生成的输出?

【问题讨论】:

【参考方案1】:

不确定控制器中的加载方案是什么,所以我很想知道。我个人只会提前加载一些“帖子”,因为您想提供愉快的用户体验。

所以我会尝试这样的事情(伪):

控制器和助手:

def index
  @posts = Posts.load_active
  #other control logic
end

def self.load_active
  @posts.find(:all, :conditions => "whatevs:, :limit => your_magic_number)
end

def load_next(pointer)
     @posts.find(:all, :conditions =>  ["index > (?)", pointer], :limit => ymn)
end

这一切的关键在于将这一切联系在一起的 javascript。我很好奇你是如何处理这个问题的,希望你能想象一个场景,你可以根据读者的当前位置主动要求更新。

也为了解决你关于同花顺的观点。不幸的是,Rails 不支持流式常规请求。但是,如果您还没有查看过类似 [Action Controler::Streaming] 的内容1。既然你有 >3.1 你不妨利用它。

如果您有任何问题,请联系我,我会尽力提供帮助。对不起,如果我的伪代码描述太简短了

【讨论】:

谢谢丹!这种方法(将大页面的加载拆分为对服务器的多个请求)当然是显而易见且正确的。但我一直在寻找流式传输常规请求的 body,因为在我看来,在不启用页面流式传输其重复内容的情况下,在 rails 中提供 provide 方法的功能是没有用的。 我明白你在做什么。几乎是随着用户观看位置而更新的身体流?我可以尝试为身体的流动制造一些东西 没错。嗯,那会很好。虽然我不必再解决这个问题,但其他人会得到答案。

以上是关于在 Ruby on Rails 3.2+ 中流式传输部分视图的主要内容,如果未能解决你的问题,请参考以下文章

使用 ruby​​ on rails 的在线音频流

ruby on rails升级资产预编译失败

Ruby on Rails 取消首字母大写

Ruby on Rails:如何使用迁移向现有列添加非空约束?

思考Ruby On Rails的底层代码(Ruby on Rails 開發秘籍 | Ruby on Rails 快速入門)

ruby 在Ruby on Rails中阻止别名