ruby-on-rails - rails : get a teaser/excerpt for an article

标签 ruby-on-rails ruby plugins teaser

我有一个将列出新闻文章的页面。为了减少页面的长度,我只想显示一个预告片(文章的前 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 标记的中间切掉我的文章字符串,并在其中插入“更多...”字符串(例如,在“”之间),这会破坏我在页面上的 html .

有没有什么办法解决这个问题,或者有没有我可以用来从 HTML 字符串生成摘录/预告片的插件?

最佳答案

您可以使用 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 个字符并在 View 中处理,因此它对 MVC 友好。

祝你好运!

关于ruby-on-rails - rails : get a teaser/excerpt for an article,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/536619/

相关文章:

ruby - 安全导航运算符 (&.) 的语法糖

android - 带有插件的 PhoneGap android 应用程序

javascript - .$ 在 CKEditor 中意味着什么?

ruby-on-rails - friendly_id 和真实 id

ruby - Rails 4. 将表单信息从一个 Controller (无模型)移动到另一个(无模型)以便将参数传递给方法

objective-c - 创建可获胜的 "random"单人纸牌洗牌

Eclipse 插件开发问题

ruby-on-rails - 使用相同命名空间的两个 Ruby gem

ruby-on-rails - 获取属于一个类别或 parent-n 类别的所有产品

ruby-on-rails - 有没有办法让控制台忽略某些错误?