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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Ruby on Rails

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

検索

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

Q&A

解決済

1回答

4383閲覧

rails 検索結果がない場合、検索結果がありませんと表示される検索機能の実装

amonosuke

総合スコア2

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Ruby on Rails

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

検索

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

0グッド

0クリップ

投稿2021/07/06 13:30

前提・実現したいこと

現在ruby on rails を使ってカフェ検索サイトをポートフォリオとして作成しております。
店舗情報用にownerinfosというテーブルがあり、store_nameというカラムに店舗名を入れています。
検索機能にて店舗名を検索し、検索結果の表示、また検索結果がなかった場合には検索結果が無い旨の表示を行いたいです。

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

検索機能は実装できたのですが、検索後に何もヒットしなかった場合に「検索結果がありません」等のメッセージを表示したいです。if文を使用して検索結果がなかった場合のメッセージをhtmlに書き込んでいますが表示されません。
どのようなに変更すれば検索結果がなかった場合の表示が可能でしょうか。

該当のソースコード

route.rb get "home/search" => "home#search"
home_controller def search @ownersinfo = Ownerinfo.search(params[:keyword]) @keyword = params[:keyword] render "home/search" end
search.html.erb <%= form_with url: home_search_path, method: :get, local: true do |f| %> キーワードから検索<%= f.text_field :keyword, value: @keyword %> <%= f.submit "検索" %> <% end %> <!--検索結果一覧の表示 --> <% @ownersinfo.each do |ownersinfo| %> <p><%= ownersinfo.store_name %></p> <% if ownersinfo.store_name = nil %> <p>検索結果がありませんでした</p> <% end %> <% end %>
ownerinfo.rb (modelです) def self.search(keyword) where(["store_name like?", "%#{keyword}%"]) end

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

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

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

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

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

guest

回答1

0

ベストアンサー

Railsに限らずですが、いったんビューの事は忘れてモデルの操作のみに集中されると良いと思います。

ruby

1ownersinfo = Ownerinfo.search(params[:keyword]) 2 3ownersinfo.count 4または 5ownersinfo.size 6 7により件数が取得できます。 8よって、件数が0件の場合は 9 10if ownersinfo.count == 0 11end 12 13または 14 15 16if ownersinfo.size == 0 17end 18 19で判断出来ます。

また配列.each do ~ endは配列の要素が0の場合は実行されません。

という事を踏まえるとビューでは、

ruby

1<% @ownersinfo.each do |ownersinfo| %> 2 <p><%= ownersinfo.store_name %></p> 3<% end %> 4 5<% if @ownersinfo.size == 0 %> 6 <p>検索結果がありませんでした</p> 7<% end %>

という感じで記述すれば、思った通りの動作になるのではないでしょうか?

投稿2021/07/06 13:42

mingos

総合スコア4184

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

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

amonosuke

2021/07/08 12:40

解決いたしました、ありがとうございます。each文は0の時にそもそも表示されないということも勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問