質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails

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

Q&A

1回答

907閲覧

railsの検索機能を実装したい

shinshin12

総合スコア0

Ruby on Rails

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

0グッド

0クリップ

投稿2021/01/18 07:27

前提・実現したいこと

トップページからsearch.html.erbに検索結果を表示できるようにしたいです。

発生している問題・エラーメッセージ

エラーメッセージはなくbinding.pryを試したがコントローラーに値が送られていないみたいです。

Started GET "/?option=1&keyword=%E7%B6%BA%E9%BA%97&commit=%E6%A4%9C%E7%B4%A2" for ::1 at 2021-01-18 16:02:13 +0900 Processing by UsersController#index as HTML Parameters: {"option"=>"1", "keyword"=>"綺麗", "commit"=>"検索"} Rendering users/index.html.erb within layouts/application User Load (0.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 2 ORDER BY `users`.`id` ASC LIMIT 1 ↳ app/views/shared/_header.html.erb:4 Rendered shared/_header.html.erb (Duration: 2.8ms | Allocations: 2316) Rendered shared/_footer.html.erb (Duration: 0.0ms | Allocations: 5) Rendered users/index.html.erb within layouts/application (Duration: 6.2ms | Allocations: 5231) [Webpacker] Everything's up-to-date. Nothing to do Completed 200 OK in 24ms (Views: 22.3ms | ActiveRecord: 0.4ms | Allocations: 23613)

該当のソースコード

検索form <%= form_with( url:search_users_path, local: true, method: :get, class: "search-form") do |f|%> <%= f.select(:option, options_for_select([["user", "1"],["information","2"]]))%> <%= f.text_field :keyword, placeholder: "小見出し"%> <%= f.submit "検索", class: "btn btn-outline-light" %>
userコントローラーのsearchアクション def search @user_or_information = params[:option] if @user_or_information == "1" @users = User.search(params[:keyword], @user_or_information) else @posts = Information.search(params[:keyword], @user_or_information) end end ``` ``` userモデル def User.search(search, user_or_information) if user_or_post == "1" User.where(['nickname LIKE ?', "%#{search}%"]) else User.all end ``` ``` informationモデル def Information.search(search, user_or_information) if user_or_post == "2" Information.where(['title LIKE ?', "%#{search}%"]) else Information.all end

試したこと

binding.pryで処理が止まるかを試しましたが、処理が止まることもなく下記が表示されただけでした。

http://localhost:3000/?option=1&keyword=%E7%B6%BA%E9%BA%97&commit=%E6%A4%9C%E7%B4%A2

補足情報(FW/ツールのバージョンなど)

ransackは使用しておりません。

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

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

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

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

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

guest

回答1

0

UsersControllerのindexアクションにリクエストが行っていて、searchアクションにリクエストが来てないのではとおもいます。
indexアクションで検索をするか、routesの見直しをする必要があるかと思います。

投稿2021/01/19 09:51

satoshih

総合スコア799

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

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

shinshin12

2021/01/19 12:55

ご回答ありがとうございます。 ルーティングの方はcollectionを使ってsearchアクションにリクエストがいくようにしております。 他に考えられる要因が思い浮かばないため質問させていただきました。
satoshih

2021/01/19 13:07

んーログに Processing by UsersController#index as HTML と出てるのでindexにリクエストしてると思いますよ。 設定を見直してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問