前提・実現したいこと
railsチュートリアルで作成したSampleAppに検索機能を実装しようとしています。
ransackを導入して、検索機能を動作させる事はできたのですが、検索機能のテストコード
を作成中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
NoMethodError: undefined method `ransack'
該当のソースコード
以下のテストを実行すると、※の行でエラーが発生します。
(users_controller.rb)
#ユーザー検索機能のテスト test "users search" do log_in_as(@admin) # All users get users_path, params: {q: {name_cont: ""}} ※この行でエラー発生 User.paginate(page:1).each do |user| assert_select 'a[href=?]', user_path(user), text:user.name end assert_select 'title', "All users | Ruby on Rails Tutorial Sample App" end
上記のGETリクエストで発生するindexアクションのコードは下記になります。
※の行でエラーが発生します。
(users_index_test.rb)
def index if params[:q] && params[:q].reject { |key, value| value.blank? }.present? @q = User.ransack(search_params, activated_true: true) @title = "Search Result" else @q = User.ransack(activated_true: true) ※この行でエラー発生!! @title = "All users" end @users = @q.result.paginate(page: params[:page]) end
試したこと
・bunde update、bundle installの再実行
・ransackのバージョンを2.3.0にアップデート
補足情報(FW/ツールのバージョンなど)
(OS) Windows 10
(WSL) Ubuntu 18.04.2 LTS
(Rails) 5.1.6
(ruby) 2.5.1p57
(ransack) 1.8.4
下記のサイトのコードを使っています。
https://qiita.com/YN6127yn/items/fca9efa22536b8b2a9ef
疑問
ブラウザ上で検索機能の動作は確認しているため、ransackは正常にインストールされて
ると思うのですが、なぜ、test時にransackのNoMethodErrorが発生するのかわかりません。
test時にransackを使用する宣言を記述する必要があるのでしょうか。
お手数ですが、考えられる原因がわかる方、助けてください(´;ω;`)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。