###前提・実現したいこと
検索機能についてです。
名前・年数・都道府県についての検索をそれぞれ行いたいのです。
名前・年数の検索は問題なく行えるのですが、都道府県の検索のみが正しく行うことができません。
###考察
・恐らく、検索を行える名前・年数のデータ型が(string型)なのに対して、都道府県のみ(integer型)を扱っていることが原因だと考えられます。
###行ったこと
この記事を参考にeach文に変更するなど試みたのですが解決することができずでした。
###該当コード
(user.rb)
def self.search(search) if search User.where(['name LIKE ? OR year LIKE ? OR prefecture LIKE ? ', "%#{search}%", "%#{search}%", "%#{search}%"]) else User.all end end enum prefecture: { 北海道:1,青森県:2,岩手県:3,宮城県:4,秋田県:5,山形県:6,福島県:7, 茨城県:8,栃木県:9,群馬県:10,埼玉県:11,千葉県:12,東京都:13,神奈川県:14, 新潟県:15,富山県:16,石川県:17,福井県:18,山梨県:19,長野県:20, 岐阜県:21,静岡県:22,愛知県:23,三重県:24, 滋賀県:25,京都府:26,大阪府:27,兵庫県:28,奈良県:29,和歌山県:30, 鳥取県:31,島根県:32,岡山県:33,広島県:34,山口県:35, 徳島県:36,香川県:37,愛媛県:38,高知県:39, 福岡県:40,佐賀県:41,長崎県:42,熊本県:43,大分県:44,宮崎県:45,鹿児島県:46,沖縄県:47 }
(users_controller.rb)
def index @users=User.order(id: :desc).paginate(page: params[:page], per_page: 10).where.not(id: current_user.id).search(params[:search]) end
(_search.html.erb)
<%= form_with url: users_path, method: :get, local: true do |f| %> <%= f.text_field :search, :placeholder => "仲間を探す!" %> <%= f.submit '検索' %> <% end %>
###補足情報
・開発環境:AWS Cloud9
・データベース:Ver 14.14 Distrib 5.5.62, for Linux (x86_64) using readline 5.1
・ブラウザ:GoogleChrome
・Rails 5.2.4.1
追記すべき情報などございましたら、言っていただけると幸いです。
回答お待ちしております。
回答2件
あなたの回答
tips
プレビュー