代码之家  ›  专栏  ›  技术社区  ›  SkRoR

选中时通过多选(复选框)进行Ransack搜索

  •  3
  • SkRoR  · 技术社区  · 9 年前

    在我的代码中没有显示错误,iam使用Ransak搜索,但iam没有得到搜索输出。我想在选中复选框中的大小选项时获得输出。如果我单击“中等”,我希望显示所有中等礼服,如所有 请给我一个解决方案

    这是我的复选框

    enter image description here

    这是我的密码

    产品/index.html.slim

    = search_form_for @product_search, url: shop_index_path do |f| = f.label :size_cont, "Size Available" - StandardSize.all.each do |s| = check_box_tag('product_search[standard_sizes_id_eq_any_cont][]', s.id ) = s.name

    这是我的ShopController.rb

    class ShopController < ApplicationController def index @product_search = Product.ransack(params[:q]) @products = @product_search.result(distinct:true).page(params[:page]).per(8) @product_search.build_sort if @product_search.sorts.empty? end

    型号标准尺寸.rb

    class StandardSize < ActiveRecord::Base belongs_to :product end

    这是我的模型 product.rb

    class Product < ActiveRecord::Base has_and_belongs_to_many :standard_sizes end

    这是我的服务器 Started GET "/shop?utf8=%E2%9C%93&q%5Bname_cont%5D=dress&q%5Bprice_paisas_gteq%5D=&q%5Bprice_paisas_lteq%5D=&product_search%5Bstandard_sizes_id_eq_all%5D%5B%5D=3&commit=Search" for 10.0.2.2 at 2015-07-23 10:12:42 +0000 Cannot render console from 10.0.2.2! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 Processing by ShopController#index as HTML Parameters: {"utf8"=>"✓", "q"=>{"name_cont"=>"dress", "price_paisas_gteq"=>"", "price_paisas_lteq"=>""}, "product_search"=>{"standard_sizes_id_eq_all"=>["3"]}, "commit"=>"Search"} User Load (0.1ms) SELECT 用户 .* FROM 用户 WHERE 用户 . 身份证件 = 1 ORDER BY 用户 . 身份证件 ASC LIMIT 1

    1 回复  |  直到 9 年前
        1
  •  6
  •   thebenedict    9 年前

    除非您另外配置了Ransack,否则所有搜索参数都应该嵌套在 @q 。我在 _in 而不是 _eq_any_cont .

    代替

    = search_form_for @product_search, url: shop_index_path do |f|
      = f.label :size_cont, "Size Available"
      - StandardSize.all.each do |s|
        = check_box_tag('product_search[standard_sizes_id_eq_any_cont][]', s.id ) 
        = s.name
    

    具有

    = search_form_for @q, url: shop_index_path do |f|
      = f.label :size_cont, "Size Available"
      - StandardSize.all.each do |s|
        = f.check_box :standard_sizes_id_in, {multiple: true}, s.id, nil
        = s.name