こんにちは、おーしまです。
今回は、私が作成中のアプリで、ハッシュタグ(#)が認識できないことがあったので、その解決策をご紹介します。
内容としては、タグの検索機能で、フォームにタグ名を打ち込んで検索する際に、逐次検索機能を実装して、以下のようにフォームの下に「このタグをお探しですか?」という感じで、出力するといったものです。
これは、フォームに文字を打ち込むたびに、その文字が含まれるタグをtagsテーブルから検索しているのですが、#を普通に打ち込んでも、#は#として扱われません。以下のように、データベースにタグが保存されている状態で、「#」を打ち込んでも、逐次検索できずにいました。
私も困ってgoogle検索しまくっていたのですが、なかなか良い記事が見当たりませんでした。そのとき、googleのURLを見ると、、
このようになっていました。
この時、googleで「rails #」で検索していたので、「#」が「%23」になっているのではないかと思い、formに入力すると、、
まじか。
このように、「#」は「%23」となって送られていることが分かりました。
ちなみに「%」は「%25」になっていました。
ちゃんと調べていないので、私の憶測ですが、新規登録の際のタグのフォームで「#かっこいい」と入力して、「#かっこいい」で、ちゃんと保存できているので、JavaScriptかjsonで通信した際に書き変わるのだと思います。
よって、
if (keyword.match( /#/ )) { keyword = keyword.replace("#", "%23"); }
フォームに「#」が入力された時は、「#」を「%23」に置き換えると、できるようになりました。
#は特殊文字なのかな?
調べても出てこなかったので、分かりませんが、とりあえずできて良かったです。
私と同じように、この問題で詰まっている人のために、ブログタイトルは検索されやすいようにしたよ!
今回は、ここまでです。
それではまた〜