我想创建一个搜索功能,以粗体显示搜索字词,文字围绕字词居中(围绕?)。
实施例: 我有这样的文字:
普鲁斯! Porta parturient risus a hac dapibus nec,hac tortor habitasse adipiscing,nec facilisis aenean,facilisis dignissim ridiculus, 整数估计暨? Porttitor nisi nec。 Platea,tortor egestas sagittis ut nisi phasellus enim parturient adipiscing lorem odio,montes dictumst,mus rhoncus an placerat。 Lorem proin,暨mattis aenean nec。 Augue et lorem ac augue cursus坐姿adipiscing! Augue sociis mattis 阿梅德! Natoque lorem pid。在est tincidunt,vut,arcu,duis?暨克拉斯 sociis tristique sociis odio。 Placerat ut rhoncus dictumst porta magna enim enim sed et tincidunt arcu duis integer elementum,hac dignissim。 Montes duis ut。 Auctor pulus pulvinar cras,platea tincidunt in ut adipiscing,augue。 Quis sed vel! Dapibus placerat,ac ridiculus 整个urna porttitor magnis platea cursus,mid。。
在本文中,搜索单词 adipiscing!
我希望结果不是所有文字而只是:
... ac augue cursus坐 adipiscing! Augue sociis mattis amet!...
目前,我写的是
<%= highlight(truncate(sanitize(sound.document.html_safe), :length => 3000), @soundsstring) %>
在我的控制器中:
@sounds = Sound.where(:user_id => current_user.id).search(params[:search]).order('created_at DESC').order(sort_column + " " + sort_direction).page(params[:page]).per(15)
respond_to do |format|
format.html # index.html.erb
format.json { render json: @sounds }
@soundsstring = params[:search]
单词搜索以粗体显示。但研究的核心是这个词。如果你能帮助我。
我希望我很清楚
感谢。
答案 0 :(得分:1)
您可以使用String#index
获取第一次出现的查询字符串,然后减去一些字符:
start_index = [0, @original_text.index(@query_string) - 20].max
现在只显示突出显示查询的原始文本的一部分:
highlight @original_text[start_index, (@query_string.length + 20)], @query_string