搜索这个词

时间:2013-10-14 13:41:32

标签: ruby-on-rails ruby-on-rails-3 search

我想创建一个搜索功能,以粗体显示搜索字词,文字围绕字词居中(围绕?)。

实施例: 我有这样的文字:

  

普鲁斯! 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]

单词搜索以粗体显示。但研究的核心是这个词。如果你能帮助我。

我希望我很清楚

感谢。

1 个答案:

答案 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