在我的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”等两个单词时才会输出输出。如果我输入一个单词,则表示没有匹配的字符串。有人帮我这个。我需要用户输入单个单词或两个单词或更多单词的输出方式。任何人都可以帮助我。
答案 0 :(得分:2)
可能你得到了一个
IndexError: string not matched
那是因为当params [:text]中有一个单词时,这段代码
search_term[" "] = "%"
引发错误。
您可能需要阅读字符串documentation以获取更多详细信息。它声明:
如果使用正则表达式或字符串作为索引与字符串中的位置不匹配,则会引发IndexError。
希望这有帮助。
答案 1 :(得分:1)
我自己的正则表达式并不太好,所以我经常转向Rubular。它可以帮助您构建和测试Ruby的正则表达式。