如何在文本太长时截断文本并突出显示搜索关键字

How to truncate the text and highlight search keyword when the text is too long

我在 Rails 应用程序中使用 Ransack gem 作为搜索功能。我在搜索结果中突出显示了搜索关键字参数:params[:search]。我已经使用 highlight 辅助方法

成功完成了
<%= highlight(@description.slice(0..50), params[:search]) %>

如果关键字出现在 @description

的第一个 50 字符之间,则此方法工作正常

但是如果关键字出现在50个字符之后,如何限制字符数来突出它。

我自己找到了一个解决方案并添加为答案。还有其他有效的解决方案吗?

excerpt 辅助方法可用于提取与短语的第一个实例匹配的文本。

<%= highlight(excerpt(@description, params[:search], radius: 50), params[:search]) %>

有关 TextHelper 的更多详细信息:http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html