0

私の Rails アプリケーションでは、一致する結果を表示するための一般的な検索があります。一致する結果を生成するために行ったことは、空白スペースを「%」記号に置き換えることです。完全に機能しますが、検索語の間にギャップがある場合のみです。単語を 1 つ入力すると、「一致する文字列がありません」と表示されます。

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」などの 2 つの単語を入力した場合にのみ、出力が得られます。単一の単語を入力すると、一致する文字列がないと言っています。誰でもこれで私を助けてください。ユーザーが1語または2語以上を入力する方法の両方で出力が必要です。誰もがこれを手伝ってくれます。

4

2 に答える 2

2

おそらく、あなたは

IndexError: string not matched

これは、params[:text] に 1 つの単語が入っている場合、このコードが

search_term[" "] = "%"

エラーが発生します。

詳細については、文字列のドキュメントを参照してください。それは述べています:

インデックスが文字列内の位置と一致しないため、正規表現または文字列が使用されている場合、IndexError が発生します。

お役に立てれば。

于 2013-08-19T13:40:16.570 に答える
1

私自身、正規表現はあまり得意ではないので、通常はRubularを使用します。Ruby の正規表現を作成してテストするのに役立ちます。

于 2013-08-19T13:36:51.623 に答える