ransackのエラー
ransackをインストール後、ブックマークした投稿一覧画面に、検索機能を付けようとしたところ、このようなno method errorが出てしまいました。
コード確認
boards_controller.rb
def bookmarks @q = Bookmark.ransack(params[:q]) @bookmark_boards = @q.result(distinct: true).includes(:user).order(created_at: desc).page(params[:page]) end
bookmarks.html.erb
<%= search_form_for @q, url: bookmarks_boards_path do |f| %> <div class ="input-group mb-3"> <%= f.search_field :title_or_body_cont, placeholder: "検索ワード", class:"form-control" %> <%= f.submit "検索", class:"btn btn-primary" %> </div> <% end %>
title_or_body_contメソッドが間違えていると思ったが、そうではありませんでした。
原因
before
def bookmarks @q = Bookmark.ransack(params[:q]) @bookmark_boards = @q.result(distinct: true).includes(:user).order(created_at: desc).page(params[:page]) end
after
def bookmarks @q = current_user.bookmark_boards.ransack(params[:q]) @bookmark_boards = @q.result(distinct: true).includes(:user).order(created_at: desc).page(params[:page]) end
current_user.bookmark_boardsが抜けていたことが原因でした。 これがないと、ユーザーがブックマークした掲示板を取得できませんよね。 初歩的なミスでした。😭