0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ruby on Rails】検索機能(非選択)

Posted at

目標

search.gif

開発環境

ruby 2.5.7
Rails 5.2.4.3
OS: macOS Catalina

前提

※ ▶◯◯ を選択すると、説明等が出てきますので、
  よくわからない場合の参考にしていただければと思います。

【Ruby on Rails】検索機能(モデル、方法選択式)
こちらを実装した上で編集を加えていきます。

流れ

1 controllerの編集
2 viewの編集

controllerの編集

今回は曖昧検索に絞っています。
完全一致にしたい場合は、
where(name: @content)
となります。

app/controllers/searchs_controller.rb
class SearchsController < ApplicationController
  def search
    @content = params["content"]
    @users = User.where('name LIKE ?', '%'+@content+'%')
    @posts = Post.where('title LIKE ?', '%'+@content+'%')
  end
end

viewの編集

app/views/search.html.erb
<% if @users.present? && @posts.present? %>
  <h3>【Users,Postsモデルの検索結果】検索ワード:<%= @content %></h3>
  <h4>・ユーザー名</h4>
  <%= render 'users/index', users: @users %>
  <h4>・投稿内容</h4>
  <%= render 'posts/index', posts: @posts %>
<% elsif @users.present? && @posts.empty? %>
  <h3>【Usersモデルの検索結果】検索ワード:<%= @content %></h3>
  <h4>・ユーザー名</h4>
  <%= render 'users/index', users: @users %>
<% elsif @users.empty? && @posts.present? %>
  <h3>【Postsモデルの検索結果】検索ワード:<%= @content %></h3>
  <h4>・投稿内容</h4>
  <%= render 'posts/index', posts: @posts %>
<% else %>
  <h3>検索ワード:<%= @content %>に該当はありません</h3>
<% end %>
補足【エラー時】 routingや部分テンプレートは [【Ruby on Rails】検索機能(モデル、方法選択式)](https://qiita.com/japwork/items/e6ee225970b50ea5d796) こちらを参考にしてください。
補足【present、emptyについて】 [nil? empty? blank? present? exists? メソッドを状況に応じて使い分けよう[Rails]](https://qiita.com/takuyanin/items/aa8c1d82ab14f1827a6a) こちらでわかりやすく解説されていました。
補足【&&について】 [Rubyのand,&&とor,||の違いと注意点](https://qiita.com/riku-shiru/items/533a01bdf18e2e3eef46) こちらでわかりやすく解説されていました。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?