Ruby初心者で、初めて質問させていただきます。
質問内容に至らぬところがあるかもしれませんが、よろしくお願いいたします。
前提・実現したいこと
Ransackを用いて、userの検索機能を実装したい。
発生している問題
名前とユーザーネームの検索フォームから、
該当するユーザーを検索し一覧で表示したいと思っています。
現状では、データベースに存在するユーザーと、全く同じ名前とユーザーネームを打ち込んで検索をかけても、データベース中の全てのユーザーが表示されてしまいます。
該当のソースコード
routes.rb
resources :users, only: [:new, :create, :edit, :update] do collection do get :search end end
users_controller.rb
class UsersController < ApplicationController ・ ・ ・ def search @search = User.ransack(params[:q]) @users = @search.result end ・ ・ ・ end
search.html.erb
<div class="row"> <div class="col-sm-6 offset-sm-3"> <%= search_form_for @search, url: search_users_path do |f| %> <div class= "form-group"> <%= f.label :user_name, 'ユーザーネーム' %> <%= f.text_field :user_name, class:'form-control' %> </div> <div class= "form-group"> <%= f.label :name, '氏名' %> <%= f.text_field :name, class:'form-control' %> </div> <%= f.submit '検索', class: 'btn btn-primary btn-block mb-5' %> <% end %> <table class="table table-striped table-bordered"> <tr> <th>ユーザーネーム</th> <th>氏名</th> </tr> <% @users.each do |user| %> <tr> <td><%= user.user_name %></td> <td><%= user.name %></td> </tr> <% end %> </table> </div> </div>
試したこと
pry-byebugで
class UsersController < ApplicationController ・ ・ ・ def search @search = User.ransack(params[:q]) @users = @search.result binding.pry end ・ ・ ・ end
で検索フォームに該当するユーザーと同一の名前とユーザーネームを入れて検索しても、
@usersに全てのユーザーが入っていたため、検索で絞り込むこと自体ができていないと考えています。
お手数をおかけしますが、何卒ご教授のほどよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/25 12:21
2019/09/25 12:41