1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ハッシュタグ検索で入力される文字をいい感じに置換させるメソッド集

Last updated at Posted at 2020-11-10

はじめに

やりたいこと

  • ハッシュタグ検索で入力された全角ハッシュを半角に変換したい
  • 全角数字を半角にしたい
  • そもそもハッシュを取り除いて検索させたい

やる理由

  • ユーザーがどんな入力の仕方をしてもいい感じに置き換えて出力したい

メソッド

  • 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

おわりに

ハッシュタグに半角数字、全角数字がごちゃまぜになるのが嫌だったので、ハッシュタグ入力時に全角数字のバリデーションを組みました。(本当は置換して保存したかったけどやり方わからず断念)

とりあえずこのやり方なら、検索ユーザーがどんなキーワードで入力してもいい感じに拾ってくれるのでよかったかなと思います。

✔︎

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?