Ransack搜索表单将搜索替换为“占位符”

时间:2020-10-31 16:47:11

标签: ruby-on-rails jquery-select2 ransack

我的城市搜袋搜罗表格以某种方式具有“默认城市”,即使我单击提交并且URL中存在参数,我仍然会返回带有默认城市的选择,这也会影响搜索结果。这是我的选择(我使用select2)。

= search_form_for @search, url: filter_path do |f|
    .columns.is-centered{style: 'padding-top: 100px;'}
        .column.is-half
            = f.select(:geo_code_eq, options_for_select(@collection, (params[:q][:geo_code_eq].nil? ? '' : params[:q][:geo_code_eq])), {:include_blank => true}, {class: "city-select2 select-input" })
            = f.submit "Search"

我认为它有一定的安全性。与收集有关,但我找不到,这是默认城市的真正原因。所以这部分控制器:

def filter
 @city_list = city_list
 params[:q] ||= {}
 params[:q][:geo_code_eq] = @city_list[0][1]
 if params[:q].present? && params[:q][:geo_code_eq].present?
  @city = Geo::City.find_by(geo_code: params[:q][:geo_code_eq]) 
  @collection = [["#{@city}", "#{params[:q][:geo_code_eq]}"]]
end
    @search = @city.streets.ransack(params[:q])
    @streets = @search.result
end

1 个答案:

答案 0 :(得分:0)

这是将占位符放在选择参数中[:q] [:geo_code_eq] = @city_list [0] [1],基本上是说列表中始终有第一个位置成为我的选择位置。我用一个空集合替换了它,并使用了Rails .none来显示没有街道的情况,而且还不错。

相关问题