はじめに
やりたいこと
- ハッシュタグ検索で入力された全角ハッシュを半角に変換したい
- 全角数字を半角にしたい
- そもそもハッシュを取り除いて検索させたい
やる理由
- ユーザーがどんな入力の仕方をしてもいい感じに置き換えて出力したい
メソッド
- trメソッド
- deleteメソッド
trメソッド
第一引数を第二引数に変換するメソッド
sample.rb
str = '一郎'
puts str.tr('一', '二')
# 結果 => 二郎
これをモデルに定義したsearchアクションに追記
デフォルトのsearchアクション
models/hashtag.rb
def self.search(search)
if search != ""
Hashtag.where('name LIKE(?)', "%#{search}%")
else
Hashtag.all
end
end
trメソッドを追記したsearchアクション
models/hashtag.rb
def self.search(search)
if search != ""
Hashtag.where('name LIKE(?)', "%#{search.tr('#', '#').tr('/0-9/', '/0-9/')}%")
else
Hashtag.all
end
end
全角で入力された#と数字を半角に置換しました。
deleteメソッド
ハッシュを取り除いた形で検索させる場合
models/hashtag.rb
def self.search(search)
if search != ""
Hashtag.where('name LIKE(?)', "%#{search.tr('#', '#').tr('/0-9/', '/0-9/').delete('#')}%")
Hashtag.all
end
end
おわりに
ハッシュタグに半角数字、全角数字がごちゃまぜになるのが嫌だったので、ハッシュタグ入力時に全角数字のバリデーションを組みました。(本当は置換して保存したかったけどやり方わからず断念)
とりあえずこのやり方なら、検索ユーザーがどんなキーワードで入力してもいい感じに拾ってくれるのでよかったかなと思います。
✔︎