【问题标题】:Splitting Ruby strings into pages将 Ruby 字符串拆分为页面
【发布时间】:2012-06-03 09:41:02
【问题描述】:

我一直在考虑这个问题,但不太确定解决这个问题的最佳方法。

在 Rails 应用程序中,我有 books,其中有很多 chapters,其中有很多 sections。章节基本上只是章节的容器,尽管它们本身可能包含文本字符串。这些部分包含大部分书籍文本。

我正计划构建一个在移动浏览器中工作的 HTML 5 电子书阅读器,我不希望用户必须向下滚动——我希望文本在页面末尾中断。

我认为使用split 可能是可行的方法,但我不确定是否有办法定期中断? javascript 选项在这里会更好吗?

我看过这个:Dividing text article to smaller parts with paging in Ruby on Rails,但无法在文本中插入手动换行符,其中一些是 90,000 多个单词。

任何想法都将不胜感激。

【问题讨论】:

  • 我很确定 Javascript 可以访问客户端窗口的大小(以像素为单位)。如果您发送一堆文本并使用 CSS 以便知道客户端大小的字体,您可以将客户端窗口大小除以字体高度加上间距,以估计我们可以拥有多少行(执行宽度相同)。这不能占用太多的 JS。

标签: ruby


【解决方案1】:

我认为这里的主要问题是页面长度将取决于设备(可能还有文本大小,如果这是您的应用程序的功能)。您可能应该一次发送肯定至少有 5 页长的大块,然后让 javascript 进行分页。 Rails 无法访问,也不应该访问显示的大小。

文本只需要很少的数据,您不必担心传输过多或在内存中保存过多。

【讨论】:

  • 好吧,我没有太多 JS 知识,所以这需要一些工作才能弄清楚,但似乎比让 Rails 处理拆分更容易。
【解决方案2】:

您可以使用空行(“\n”或“
”)作为分隔符。

【讨论】:

    【解决方案3】:

    我会向下发送足够多的页面内容以轻松填充页面等等,然后在客户端幻灯片上使用 javascript 从页面中删除句子,直到滚动条消失。

    Resize.js 是我不久前写的类似的东西。我想放大/缩小屏幕上使用的字体大小,直到屏幕被填满(对于仪表板监视器)。你的会类似,但不是更改字体大小,而是修剪句子。

    如果您看不到如何修改此代码,请告诉我。

    注意:我还会让 javascript 记录它最终显示的文本数量,并在“下一页”请求中将其传递给服务器,以便服务器知道从哪里开始下一页。

    【讨论】:

    • 这实际上是个好主意,它避免了一次拉整个文本组。
    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 2015-08-09
    • 1970-01-01
    • 2013-12-18
    相关资源
    最近更新 更多