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


目標

開発環境

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】検索機能(モデル、方法選択式)
こちらを参考にしてください。

補足【present、emptyについて】
nil? empty? blank? present? exists? メソッドを状況に応じて使い分けよう[Rails]
こちらでわかりやすく解説されていました。

補足【&&について】
Rubyのand,&&とor,||の違いと注意点
こちらでわかりやすく解説されていました。