如何在Rails中创建动态查询(我对这个框架和ruby都很新)。
在我的控制器中我有:
class ProductController < ApplicationController
def index
@products = Product.where(active:1).paginate(:page => params[:page])
@categories= Category.all
end
end
我的部分观点是:
.filter-product
=form_tag do
%table#id-form
%tr
%th{valign: "top"} Product name:
%td
%input.inp-form{type: "text"}/
%td
%tr
%th{valign: "top"} Category:
%td
%select
%option{value: ""} All
- @categories.each do |cat|
%option{value: cat.id}= cat.label
%td
%tr
%th{valign: "top"} Stock:
%td
%input.inp-form{type: "checkbox"}/
%td
%tr
%th
%td{valign: "top"}
%input.form-submit{type: "button", value: ""}/
%input.form-reset{type: "reset", value: ""}/
%td
我想按标题,可用性(库存)和类别过滤我的产品。如果未设置查询,查询也应该有效。
我尝试了至少3-4种方式,但没有一种方法有效。
编辑: 这是我的模特:
class Product < ActiveRecord::Base
belongs_to :category
end
class Category < ActiveRecord::Base
has_many :products
end
答案 0 :(得分:0)
请尝试以下方式:
Product.where(active:1,"title like ?", "category_id = ?", params[:title].presence || '%%', params[:category_id].presence || Category.all.collect(&:id) ).paginate(:page => params[:page]...
我希望它适合你。
答案 1 :(得分:0)
我肯定会尝试使用像Ransack这样的宝石“标准化”你的过滤器。这样您就不必自己编写所有代码,并且Ransack与您现有的分页完美地集成在一起。 DRY也意味着“如果你不需要重新发明轮子”......