我正試圖將此查詢添加到我的搜索方法中。如何在rails中合併.where()查詢
books = Book.where("category_id LIKE?","%{params[:category]}%").where("price LIKE <= ?", "%#{params[:price]}%").
我在做什麼錯?
class Book < ApplicationRecord
belongs_to :category
def self.search(params)
books = Book.where("title LIKE ?","%#{params[:search]}%") if params[:search].present?
books = Book.where("category_id LIKE ?","%#{params[:category]}%").where("price LIKE <= ?", "%#{params[:price]}%")
end
books_controller.rb
def search
if params[:category].present?
@books = Book.where(category_id: params[:category])
elsif params[:search].blank?
@books = Book.all
else
@books = Book.search(params)
end
end
search.html.erb
<%= form_tag search_books_path, method: :get do %>
<%= select_tag :category, options_from_collection_for_select(Category.all, :id, :name), :include_blank => "Select Category" %>
<%=number_field_tag :price%>
<%=text_field_tag :search, nil, placeholder: "search" %>
<%= submit_tag "Search" %>
什麼是你得到的問題或錯誤消息?你應該能夠將where子句連在一起而不會出現問題。我不確定你使用'LIKE'語法,但是 - 你的'category_id'和'price'列是整數還是文本? 'LIKE'通常用於文本,但這些聽起來像整數字段給我... – Brian
我的[category_id]和價格字段都是整數。我根本沒有任何錯誤。搜索不只是使用規則。它只使用這個規則@books = Book.where(category_id:params [:category]) – user109705