我正试图将此查询添加到我的搜索方法中。如何在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