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

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

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

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

Ruby

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

検索

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

Q&A

解決済

2回答

1669閲覧

ransackを使って検索結果を表示したい

tamu_daiki

総合スコア10

Ruby on Rails 5

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

Ruby

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

検索

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

1グッド

0クリップ

投稿2021/07/28 07:21

前提・実現したいこと

ransackを使用してsearch.html.erb(検索結果)を表示させたいです

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

検索ボタンを押すと、初期画面のindex.html.erbが表示されてしまいます
エラーメッセージ

### 該当のソースコード ソースコード ルーティング get "search", to: "posts#search" 検索フォーム <%= search_form_for @q, url: search_path do |f| %> <%= f.search_field :shopaddress_cont, class: 'form-control', placeholder: "住所を入れてください" %> <%= f.submit'検索',class: 'btn btn-success' %> <% end %> コントローラー before_action :set_q, only: [:index, :search] def search @results = @q.result end private def set_q @q = Post.ransack(params[:q]) end  search.html.erb <tbody> <% @results.each do |searchresult| %> <div class = "searchresultbox"></div> <br><%= searchresult.shopname %></br> <br><%= searchresult.shopaddress %></br> <br><%= searchresult.shopcontent %></br> </div> <% end %> </tbody> ### 試したこと ransack、に関する記事の確認 ルーティングの確認 ### 補足情報(FW/ツールのバージョンなど) ruby '2.6.3' gem 'rails', '~> 5.2.5' gem 'mysql2', '>= 0.4.4', '< 0.6.0' ここにより詳細な情報を記載してください。
shinoharat👍を押しています

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

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

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

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

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

shinoharat

2021/07/29 08:15

認識合わせをさせてください。 実現したい機能は、以下のような仕様で合っていますか? 【1】初期表示について 【1-1】初期表示のURLは /posts (indexアクション)である。 【1-2】その画面には検索フォームがある 【1-3】初期表示段階では、検索条件は空っぽ、検索結果0件。 【2】検索について 【2-1】検索条件を入力し、検索ボタンを押下すると、URLが /search に遷移する。 【2-2】検索フォームの検索条件は引き継がれる。 【2-3】検索結果が表示される。 認識が違う点があったら教えてください。
shinoharat

2021/07/29 08:19

また、 「検索ボタンを押すと、初期画面のindex.html.erbが表示されてしまいます」 とのことですが、具体的にはどのような状態なのでしょうか? 言い換えると、【1-1】~【2-3】の中で実現できていない機能はどれですか? URLが /posts のままなのか、 URLは /search になっているし、検索条件も保持されているけど、結果欄だけが空っぽなのか、 それ以外の状態なのか
shinoharat

2021/07/29 08:25

ちなみに、binding.pry の使い方は知っていますか? コントローラーの search アクションで binding.pry して、 ・ちゃんと search アクションが呼びだされているか? ・@results に想定通りの件数のデータがあるか? ・params に想定通りのデータが入っているか? などを調べれば、原因究明に近づくのではと思います。
tamu_daiki

2021/07/29 08:52

ありがとうございます 認識は、合っています。 【2】を実行したタイミングで、index(初期画面)にrenderされている形です。 : 検索を実行した際の、ターミナルです Parameters: {"utf8"=>"✓", "q"=>{"shopaddress_cont"=>"渋谷区"}, "commit"=>"検索"} Rendering posts/index.html.erb within layouts/application Post Load (0.3ms) SELECT `posts`.* FROM `posts` ↳ app/views/posts/index.html.erb:15 (0.2ms) SELECT COUNT(*) FROM `posts` ↳ app/views/posts/index.html.erb:25 Rendered posts/index.html.erb within layouts/application (6.8ms)
shinoharat

2021/07/31 15:23

検索フォームの view をブラウザの開発者ツールで見た時、form タグの action に想定通りの URL が出力されていますか?
tamu_daiki

2021/07/31 22:41

ご回答ありがとうございます。無事解決しました htmlのフォームがrailsのフォームを挟んでいて、表面的には、値は入力されてますが、内部的には、railsのフォームには、からの値が入力されていた状態でした。助かりました 本当にありがとうございます <form> <% search_form_for %> <% end %> </form>
guest

回答2

0

自己解決

htmlのフォームがrailsのフォームを挟んでいて、表面的には、値は入力されてますが、内部的には、railsのフォームには、からの値が入力されていた状態でした
<% search_form_for %>
<% end %>

</form>

投稿2021/07/31 22:42

tamu_daiki

総合スコア10

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

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

0

search_form_for に url オプションが付いているのでパッと見た感じ良さそうですが・・・なんでだろう?

「search.html.erb」について、tbody の内側に div が書いてあるのが気になります。

もしかして、検索や遷移自体は正しく行われているけど、html の構文がおかしいから、検索結果が画面に表示されてないだけってことはないですか?

「search.html.erb」をちゃんとした書き方(tr, td)に変えるとどうなりますか?

投稿2021/07/29 06:55

shinoharat

総合スコア1685

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

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

tamu_daiki

2021/07/29 07:54

回答ありがとうございます。 今<tbody>を消したのですが、結果は、変わらずでした。他の要因は考えられますか? 力添え頂きたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問