当前位置:  开发笔记 > 编程语言 > 正文

rails:获取文章的预告片/摘录

如何解决《rails:获取文章的预告片/摘录》经验,为你挑选了1个好方法。

我有一个页面,列出新闻文章.为了减少页面的长度,我只想显示一个预告片(文章的前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字符串生成摘录/预告片?



1> mwilliams..:

您可以使用Sanitize和Truncate的组合.

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友好的.

祝好运!


这可能有效,但您应该清理然后截断.如果您截断然后清理,则可能会在HTML标记的中间截断,并且清理将使部分标记可见.
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有