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

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

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

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

Ruby on Rails

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

検索

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

Q&A

1回答

1402閲覧

【Rails】【Ransack】検索実行前に対象のカラムの値が全て表示されてしまう

Atamak

総合スコア5

Ruby

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

Ruby on Rails

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

検索

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

0グッド

0クリップ

投稿2020/09/19 06:41

????RoRにて投稿機能を利用した掲示板にて検索機能をRansackで追加実装しています。
(Ransackを初めて使ったので至らない点がある場合は申し訳ありません・・)

挙動

## 実装したいこと
index.html.erbから検索フォームを利用し、検索すると検索結果がフォームの下に出力される。

 現在の挙動

検索機能自体には問題ないのですが、
indexhtml.erbに遷移すると検索対象としているカラムの値が羅列されている状態です。
その状態から検索フォームで検索をすると検索結果のみ表示されます。

仮説

if文の分岐に原因があると考え、each doで全て表示されてしまっているのかと考えますが
他に記述方法がわかりません。
同様のエラー記事等は確認しましたが、エラー箇所が異なるように思い解決には至りませんでした。

ご教示いただけますと幸いです。

コード

/topic_controller.erb def index @search = Topic.ransack(params[:q]) @results = @search.result(distinct: true) end
/index.html.erb <div class="search"> <%= search_form_for @search do |f| %> <div class="search-form"> <%# <%= f.label :title_cont, "Name" %> <%= f.text_field :title_cont, placeholder: "コンテンツを検索する" %> <%= f.submit "Search" %> </div> <% end %> <% if @results.any? %> <% @results.each do |result| %> <%= link_to result.title, topic_path(result.id) %> <% end %> <% else %> <p>キーワードを含む投稿を検索できませんでした</p> <% end %> </div>

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

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

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

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

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

guest

回答1

0

「indexhtml.erbに遷移すると検索対象としているカラムの値が羅列されている状態です。」
というのがどういう状況かよくわからないのですが、
「Ransacを入れる前と同じ」、すなわち「絞り込みが行われず、全データが表示される」
という意味でしょうか?

ですとそれは正しい動きです。
始めてindexに来た時は検索条件が空になっていますから、全データが検索されます

どういう動きにしたいのでしょうか?

投稿2020/09/19 23:47

winterboum

総合スコア23331

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

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

Atamak

2020/09/23 07:34

コメントいただきありがとうございます!返信が遅れて申し訳ありません。 Ransacを導入後に値が全て表示されてしまっている状態にあります。 index.html.erb上に表示したい項目としてはページ上部から以下です。 ・検索フォーム ・検索結果(検索フォームでの検索結果を表示したい) ・Topic一覧(現在は投稿機能にて投稿したTopicが一覧表示されている状態) 以上が希望の表示なのですが、 現状検索結果が表示される箇所にすでに値が表示されてしまっています。 Ransackでは「検索かける前に一覧を表示しない」という機能がないということでしょうか?
winterboum

2020/09/23 08:59

Ransackは検索機能です。indexでは(細工をしなければ)Ranxakを使って検索します。絞り込み条件がないから全部出る というだけのこと。 「検索かける前に一覧を表示しない」という機能が欲しければ、実装するしかないです。 ん〜〜〜 「検索かけるまえ」ってなんだ? この表現は課題を正しく表現していないな、多分。 indexは検索して表示する actionですから、表示しているときは必ず検索してからです。
Atamak

2020/09/25 08:17

再度コメント頂きありがとうございます。 Ransackに対する知識不足で的確な課題表現ができず申し訳ありません。 色々調べてみたのですが、想定していた検索機能とは異なるようなので、 他の方法で試行してみたいと思います。 アドバイス頂きありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問