简易导轨过滤器

时间:2013-10-06 18:52:45

标签: ruby-on-rails

我有最简单的rails应用程序,带脚手架帐篷

这是我的控制器#index for

  def index
    @tents = Tent
    @tents = @tents.where(:brand => params[:brand]) if params[:brand]
    @tents = @tents.where(:season => params[:season]) if params[:season]
  end

视图也是标准的,由脚手架生成

这里搜索女巫应该过滤数据

  = form_tag tents_path, method: :get do

    = label_tag "manufacturer"
    = select_tag :brand, options_for_select(...), include_blank: true

    = label_tag "seasons"
    - Tent.pluck(:season).each do |season|
      =check_box_tag 'season', season 
      =h season

    = submit_tag 'Submit'

问题1:

当我提交,并且params未被选中(select或checl_boxes)时我不想发送这个参数但是它们是空的

GET /tents?utf8=...&brand=&season=&commit=Submit

问题2:

当我检查多个复选框时,获取请求就像是

GET /tents?utf8=...&brand=Brand&安培;季节= 4和;季节= 3和 commit=Submit

在此之后我预计将为两个值选择数据,但是控制器期望两个值都在字段中,并返回零结果

任何建议?

更新

我的问题可能在railscasts-111(高级搜索表单)中解决了

2 个答案:

答案 0 :(得分:0)

关于问题2: 您需要指定季节复选框,如下所示:

     =check_box_tag 'season[]', season

但我没有测试它

答案 1 :(得分:0)

问题2: 您需要为表单编写javascript包装器以序列化并在提交

上发送数据