🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Q&A

解決済

1回答

822閲覧

【検索機能実装】検索後のビューファイルが読み込まれない(Ruby on Rails)

chariengine

総合スコア2

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

0グッド

0クリップ

投稿2021/03/25 06:17

前提・実現したいこと

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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

rails のバージョンによっては form_with はデフォルトで remote: true です。
remote: true になっていて ajax で通信してるように見えます。

下記のようにlocal: true としてみてください。

erb

1<%= form_with url: search_path, method: :get, local: true do |f| %>

投稿2021/03/25 07:08

neko_daisuki

総合スコア2090

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chariengine

2021/03/25 07:23

早速のご回答ありがとうございます! そして無事解決いたしました、、、 基礎的な部分でしたが、なぜlocal: trueが必要になるのか理解できました。 また機会がありましたら、その時も是非よろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問