前提・実現したいこと
Ruby on Railsにてアプリ作成中です。
投稿検索機能を実装したいのですが、検索ボタンを押下してもそのままのページに留まってしまい、検索実行後の画面に遷移しません。
指定したコントローラーの指定したアクションまでは処理が進んでいることはbinding.pryを用いて確認済みです。
エラーが出るわけではないため、解決策が分かりません。
7つのアクション以外を使う機会がなかなか無いため、
基本的な部分の理解が足りておらずこのようなことになっているかもしれません。
どなたかご意見いただけますと幸いです。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
投稿一覧ページの検索フォームより、ユーザー検索か投稿検索かを選択し、キーワードを入力
searchesコントローラーのindexアクションに遷移させたい
■index.html.erb
<%= form_with url: search_path, method: :get do |f| %> <%= select_tag "range", options_for_select([['---選択してください---', ''], ['ユーザー', '1'], ['ポートフォリオ', '2']]) %> <%= f.text_field :word %> <%= f.submit "検索" %> <% end %>
■routes.rb
get "/search", to: "searches#index"
ここまで処理が来ていることは確認済み
ユーザーに関する検索か投稿に関する検索家を条件分岐により判別し、
self.search(word)により適宜各モデルに遷移
■searches_controller.rb
class SearchesController < ApplicationController def index @range = params[:range] word = params[:word] if @range == "1" @user = User.search(word) else @portfolio = Portfolio.search(word) end end end
ユーザー検索の場合、自己紹介文と検索ワードを照合
ここにも処理は来ている
■user.rb
def self.search(word) if word != "" User.where("introduction LIKE(?)", "%#{word}%") else User.all end end
投稿検索の場合、投稿文と検索ワードを照合
ここにも処理は来ている
■portfolio.rb
def self.search(word) if word != "" Portfolio.where("detail LIKE(?)", "%#{word}%") else Portfolio.all end end
試したこと
個別のコントローラーにするのではなく、portfoliosコントローラー内にsearchアクションを記述しても変わらず。
ターミナルのログを見ると、Processing by SearchesController#index as JSとなっており、as JSの部分が気になる。
他のページに遷移した際には、as HTMLや画像があればasJPEGになる。
javascriptは使っていないので何を示しているか分からず。
また、Rendered searches/index.html.erb within layouts/application (Duration: 4.3ms | Allocations: 4678)というログもあり、searches/index.html.erbまでは到達しているという意味合いかと思いました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/25 07:23