ActionView :: Helpers :: TextHelper摘录助手功能不全

时间:2013-07-15 16:37:58

标签: ruby-on-rails ruby

我正在使用模块ActionView::Helpers::TextHelper来生成文本的摘录。如果一个单词不止一次出现,它就会摘录第一次出现。

  

<%= excerpt('你好,我是Ruby爱好者,Rails爱好者,永远不会回到PHP','爱人',:radius => 5)%>
  "...lover,..."

我期待返回字符串是这样的,因为有两次出现'lover'这个词:

  

“......情人,......情人......”

如何才能让它显示多次出现的关键字?

我正在使用rails 3.2.11。

2 个答案:

答案 0 :(得分:1)

摘录(text,phrase,options = {})链接:

从与第一个词组实例匹配的文本中提取摘录。 :radius选项扩展第一次出现的短语

每侧的摘录

作为文档说明,只是你搜索的短语的第一个实例,而不是它的每个实例

答案 1 :(得分:0)

我一直在使用application_helper.rb中定义的multi_excerpt()方法

# Returns a summary of +text+ in the form of +phrase+ excerpts
#
#   multi_excerpt('This string is is a very long long long string ', 'string', radius: 5)
#   # => ...This string is i...long string ...
def multi_excerpt(text, phrase, options = {})
  return unless text && phrase

  radius   = options.fetch(:radius, 10)
  omission = options.fetch(:omission, "...")

  raise if phrase.is_a? Regexp
  regex = /.{,#{radius}}#{Regexp.escape(phrase)}.{,#{radius}}/i
  parts = text.scan(regex)
  "#{omission}#{parts.join(omission)}#{omission}"
end

在此处链接我相关的postPR