【问题标题】:How to build a simple search form with rails and advance search form with ransack如何使用 rails 构建简单的搜索表单以及使用 ransack 构建高级搜索表单
【发布时间】: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


    【解决方案1】:

    你有一个错字Listing.statuses[:pendeng],它应该是Listing.statuses[:pending],所以这就是它返回nil而不是正确值的原因。

    此外,您似乎已经拥有pending 的范围:

    Listing.includes(:photos).pending.where(town: params[:search])
    

    【讨论】:

    • 谢谢。我更正了拼写错误但没有任何改变,我仍然有空值并且没有结果显示
    • 请您发布您的列表模型,您是否尝试过使用pending 范围?
    • 我添加了列表模型
    猜你喜欢
    • 2011-10-23
    • 2017-12-02
    • 2018-11-02
    • 2016-07-14
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多