【Rails】Topページを絞り込むページ作成!
はじめに
本記事ではTOPページで検索したものを他ページで表示するコードを記載しています
前提
- 記事のテーブルはtweets
- tweetsで検索する文字列はbody
- indexページ(index.html.erb)に検索フォーム、searchページ(search.html.erb)検索結果を表示
手順
search.html.erb作成
↑の名前のファイルを自分のテーブル名のViewファイルの中に作成しましょう!
その中に一度自分のindexページ(index.html.erb)をコピペして入れておきましょう!
何かindexページと違う文字など入れておくとわかりやすいです🔥
ルーティング設定
config/routes.rb
get 'search' => 'tweets#search'
検索フォーム作成
index.html.erb
<div class="search-form">
<%= form_with url: search_path, method: :get, local: true do |f| %>
<%= f.text_field :keyword, value: @keyword %>
<%= f.submit "検索" %>
<% end %>
</div>
↑Viewを作成。
検索機能の追加
tweet.rb
def self.search(keyword)
where(["body like?","%#{keyword}%"])
end
↑こちらではkeywordで受け取った中身をbodyの中から探してきています。
tweets_controller.rb
def search
@tweets = Tweet.search(params[:keyword])
@keyword = params[:keyword]
render "search"
end
↑ここで@tweetsの中身にキーワードで選んだ投稿のみを入れることができます!
参考文献
Railsで検索機能を実装する方法
https://qiita.com/Yusuke_Hoirta/items/159e63bcc5e99958d698
終わりに
この機能をつけることでrailsでTOPページを違う形で表示することができます!
楽しみながらプログラミングしていきましょう🔥