0

在我的 Rails 应用程序中,我有一个通用搜索来显示匹配结果。我为产生匹配结果所做的就是用“%”符号替换空格。它工作完美,但前提是搜索词之间存在差距。如果我输入一个单词,它会显示“没有匹配的字符串”。

class TweetsController<ApplicationController
  def index
    city = params[:show]
    search_term = params[:text]        
    search_term[" "] = "%"

    city_coordinates = Coordinates.where('city=?', city)
    @tweets = if (city_coordinates.count == 1 && city_coordinates.first.valid_location?)                     
        Tweets.for_coordinates(city_coordinates.first) &  Tweets.where("tweet_text LIKE?" ,"%#{search_term}%").all                     
      else if (Coordinates.count != 1 )
        Tweets.for_user_location(city) & Tweets.where("tweet_text LIKE ?" , "%#{search_term}%").all
      else
        @tweets = Tweets.where("%tweet_text% LIKE ? ", "%#{search_term}%").all
      end
    end
  end
end

只有当我输入两个单词,如 "Harbhajan Singh"、"VVS Laxman" 时,我才会得到输出。如果我输入一个单词,它会说没有匹配的字符串。任何人都可以帮我解决这个问题。我需要用户输入单个单词或两个单词或更多单词的两种方式的输出。任何人都可以帮助我。

4

2 回答 2

2

可能,你得到一个

IndexError: string not matched

那是因为当 params[:text] 中只有一个单词时,这段代码

search_term[" "] = "%"

引发错误。

您可能需要阅读字符串文档以了解更多详细信息。它指出:

如果正则表达式或字符串用作索引与字符串中的位置不匹配,则会引发 IndexError。

希望这可以帮助。

于 2013-08-19T13:40:16.570 回答
1

I'm not too great with regular expressions myself, so I usually turn to Rubular. It helps you build and test regular expressions for Ruby.

于 2013-08-19T13:36:51.623 回答