プログラミング勉強中!!

TECH::EXPERT 40期 受講生の筆者がその日学んだことをアウトプットしていくブログです。学習量によっては全て書ききれないこともあります。お気付きのことありましたバシバシコメントください!!3月中旬よりWEBエンジニアとして働くことになりました。日々の業務などについても発信させていただきたいと思います!!よろしくお願いいたします!!

転職活動等(初回面談)(メインはLIKE句を用いたあいまい検索の実装)

はい、こんばんは。

 

世間は年の瀬、学生たちは冬休みに入り、野原を駆け回っておりました。

 

そんな中、今日もTECH::EXPERT梅田校へと足を向けました。

 

最初にキャリアアドバイザーの方と面談ということで、センタービルのカフェへ。

 

面談内容

大阪、東京の求人の傾向について

自分の学歴や経歴について

将来どうなって行きたいかについて

転職活動で自分が重要視するものは何かについて

 

だいたいこんな感じで1時間話をしていただいた。

 

現段階でやりたいこと、将来像に関しては漠然としたものが多く、答えられなかったが、1番はWebアプリ開発に携わらせてもらえるところと考えている。

 

大阪ではWebアプリ開発に励む会社よりも、業務側の募集が多いようだ。加えて、Webアプリ開発の会社もあるのだが、求人が少ない上に、ライバルが多く、高い壁となってしまっているようだ。精進せねば・・・

 

ということで今日のアウトプットです。

 

今日のテーマは「あいまい検索」です!!

 

具体的には、form_forにてキーワードを入力→検索のワードに引っかかるものを引っ張ってくれるというものです。

 

今回のあいまい検索に使うものの解説。

# 曖昧文字列について

%・・・任意の文字列を検索する

_・・・任意の1文字を検索する。

 

# 使用例

where.('title LIKE(?)', "a%")

aから始まるタイトルを検索する。

 

where.('title LIKE(?)', "%b")

bで終わるタイトルを検索

 

where.('title LIKE(?)', "%c%")

cが含まれるタイトルを検索

 

where.('title LIKE(?)', "d_")

dで始まる2文字のタイトルを検索

 

where.('title LIKE(?)', "_e")

eで終わる2文字のタイトルを検索

 

実際のコードでは、"%a"とか"_e"とかを指定することはほぼないです。 

 

では、順をおって実装して行きましょう。

app/controller/items_controller.rb

f:id:g1034725:20181227002746p:plain

 

まず、コントローラに記述をします。

 

 今回のアプリの場合は、searchアクションに対して検索をしてほしいわけですから、ここに記述します。

 

nameはカラム名になり、取得してほしい情報が入っているカラムを指定します。

 

この場合は、名前を検索のキーワードとしてほしいので、nameと指定します。

 

また、"%#{params[:keyword]}"に関してですが、%%で囲んでいるので、paramsの[:keyword]を含むという指定をしてあげるわけです。

 

これでコントローラの処理は完了です。

 

次にformが送られてくるビュー側の処理をします。

form_forに対してname属性を指定してあげる必要があります。ここで[:keyword]の受け渡しをするわけですね。

f:id:g1034725:20181227003441p:plain

 意味合いとしては、formから[:keyword]が送られ、コントローラに行きます。コントローラで[:keyword]に合致するものがあるか判断し、結果をビューに返すという処理がされています。

 

これで曖昧検索が実装できました。

 

思ったより簡単にできましたので、お困りの方はぜひお試しください!!

 

それでは。