2012-05-31 141 views
0

我一直在考虑这个问题一段时间,并不太确定最好的方式去实现它。将Ruby字符串拆分成页面

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

我打算构建一个可在移动浏览器中工作的HTML 5电子书阅读器,并且我不希望用户必须向下滚动 - 我希望文本在页面末尾处中断。

我假设使用split可能是要走的路,但我不确定有定期休息的方法吗?在这里JavaScript的选项会更好吗?

我看过这个:Dividing text article to smaller parts with paging in Ruby on Rails,但不能在文本中插入手动打断标记,其中有些标记是90,000多个单词。

任何想法,将不胜感激。

+1

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

回答

0

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

文本只需要很少的数据,你不应该担心传输超过你需要的数据或者在内存中保留太多。

+0

好的,我没有太多的JS知识,所以需要一些工作来弄清楚,但似乎比让Rails处理分裂更容易。 – Slick23

0

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

0

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

Resize.js是我刚才写的东西。我想放大/缩小屏幕上使用的字体大小,直到屏幕显示完整(对于仪表板监视器)。您的情况与此类似,但不是改变字体大小,而是裁剪句子。

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

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

+1

这实际上是一个好主意,它可以避免一次拉动整组文本。 – Slick23