Railsの検索機能についてわからない点がございます。
現在Railsにて書籍のレビューアプリを作っており、検索機能も実装しております。
現状だと検索ページに遷移すると登録のある書籍が全て反映する状態であり、そこから検索をして絞っていくような形です。
しかし見栄え的にあまり良くないので、
検索をかけるまでは何も書籍が反映しない状況にしたいと考えております。
■現状
https://gyazo.com/1e31eaa9441c97d30e05f1b2709f3c7e
■理想
https://gyazo.com/893c489a3b68eca7eaa0d6efcb6eac5a
Rails
1 2##products_controller 3class ProductsController < ApplicationController 4 before_action :authenticate_user! 5 6 def index 7 @products = Product.includes(:user).page(params[:page]).per(5).order("created_at DESC") 8 end 9 10 def new 11 @product = Product.new 12 end 13 14 def create 15 @products = Product.create(bookname: product_params[:bookname], author: product_params[:author], image: product_params[:image], user_id: current_user.id) 16 end 17 18 def show 19 @product = Product.find(params[:id]) 20 @review = @product.reviews.all.count 21 @products = Product.page(params[:id]).per(10).order("created_at DESC") 22 @reviews = Review.order("created_at ASC").page(params[:page]).per(5) 23 end 24 25 def search 26 @products = Product.where('bookname LIKE(?)', "%#{params[:keyword]}%") 27 end 28 29 private 30 def product_params 31 params.require(:product).permit(:bookname, :author, :image) 32 end 33 34end 35
rails
1 2##products_search.html.erb 3<div class="contents-box"> 4 <div class="container-left"> 5 <div class="container-search-box"> 6 <h3>書籍を検索する</h3> 7 <%= form_tag('/products/search', method: :get) do %> 8 <input id="sbox" name="keyword" type="text" placeholder="キーワードを入力" /> 9 <input id="sbtn" type="submit" value="検索" /> 10 <% end %> 11 <form accept-charset="utf-8" action="/" class="js-search-submit" method="get"> 12 </form> 13 </div> 14 <div class="container-search-result"> 15 <h3>検索一覧</h3> 16 <div class="no-search"> 17 <p>検索でレビューを書きたい書籍が見つからなかった場合はまず書籍をご登録ください</p> 18 <a class="right-btn" href="/products/new">書籍を登録する</a> 19 </div> 20 <br> 21 <% @products.each do |product| %> 22 <a class="container-search-result-box" href="/products/<%= product.id %>" title="<%= product.bookname %>"> 23 <div class="container-search-result-box-left" > 24 <% if product.image.attached? %> 25 <%= image_tag product.image %> 26 <% end %> 27 </div> 28 <div class="container-search-result-box-right"> 29 <h2><%= product.bookname %></h2> 30 <%= product.author %> 31 </div> 32 </a> 33 <% end %> 34 </div> 35 </div> 36 <div class="container-right"> 37 <%= link_to "書籍を検索する", "/products/search", class: "right-btn" %> 38 <%= link_to "マイページ", user_path(current_user), class: "right-btn" %> 39 <a class="right-btn" href=""></a> 40 </div> 41</div>
rails
1##product.rb 2class Product < ApplicationRecord 3 4 has_one_attached :image 5 6 has_many :reviews 7 belongs_to :user 8 has_many :comments 9 10end 11
どなたかご教示いただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/04 02:37