ruby-on-rails – rails:获取文章的预告/摘录

我有一个页面,列出新闻文章.为了减少页面的长度,我只想显示一个预告片(文章的前200个单词/ 600个字母),然后显示一个“更多…”链接,当点击时,将扩展其余部分jQuery / Javascript方式的文章.现在,我已经弄明白了,甚至在一些粘贴页面上找到了以下帮助方法,这将确保新闻文章(字符串)不会在一个单词的中间被切断:
def shorten (string,count = 30)
    if string.length >= count
      shortened = string[0,count]
      splitted = shortened.split(/\s/)
      words = splitted.length
      splitted[0,words-1].join(" ") + ' ...'
    else
      string
    end
  end

我遇到的问题是我从数据库获取的新闻文章正文是HTML格式.所以,如果我运气不好,上面的助手会在html标签的中间切断我的文章字符串并在那里插入“more …”字符串(例如在“”之间),这会破坏我在网页上的html .

有什么方法可以解决这个问题,还是有一个插件可以用来从HTML字符串生成摘录/ teasers?

解决方法

您可以使用 SanitizeTruncate的组合.
truncate("And they found that many people were sleeping better.",:omission => "... (continued)",:length => 15)
# => And they found... (continued)

我正在做一个类似的任务,我有博客文章,我只是想快速摘录.所以在我看来,我只是这样做:

sanitize(truncate(blog_post.body,length: 150))

剥离HTML标签,给我前150个字符并在视图中处理,因此它是MVC友好的.

祝好运!

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...