【发布时间】:2017-09-04 21:24:29
【问题描述】:
大家,我将使用 ransack gem 将我的搜索结果重定向到具有更多过滤器的高级搜索表单。当我单击搜索按钮时,它会转到我的“search_path”但不显示任何结果 我的控制台日志打印了这个 sql 查询
SELECT "listings".* FROM "listings" WHERE ( status <> NULL AND town = 'milan') LIMIT $1 OFFSET $2 [["LIMIT", 15], ["OFFSET", 0]]
我不明白为什么状态 NULL。我期待状态[:待定]
但是高级搜索工作得很好。我的索引页面上的简单表格
这是我的搜索控制器
def search
@param_s = params[:search]
if @param_s && @param_s != ""
@listing_search = Listing.includes(:photos).where(" status <> ? AND town = ?",Listing.statuses[:pendeng], @param_s).page( params[:page]).per(4)
else
@listing_search = Listing.includes(:photos).pending.page( params[:page]).per(20)
end
@search = @listing_search.ransack(params[:q])
@listing = @search.result.page( params[:page]).per(15)
@arrlisting = @listing.to_a
end
我的索引页中有这个通用表单
<%= form_tag search_path, method: :get do %>
<%= text_field_tag :search, params[:search] %>
<%end%>
这是我的高级搜索表单
<%= search_form_for @search, url: search_path,remote: true do |f| %>
<%= f.select :home_type_cont,[["Apartment","apartment"],["Flat","flat"],["Hostel","hostel"],["Room","room"],["Business","business"]],{:include_blank => 'Select....'} %>
<%= f.select :bed_room_gteq,[["1",1],["2",2],["3",3],["4 +",4]]%>
----more-- filters
<%end%>
上市模式
class Listing < ApplicationRecord
enum status: [:pending, :rejected, :approved ]
belongs_to :user
has_many :photos, dependent: :destroy
validates :listing_name, presence: true
validates :town, presence: true
validates :home_type, presence: true
end
【问题讨论】:
标签: ruby-on-rails ransack