Ruby on rails rails 3在多个模型之间搜索
我想避免一些宝石,所以我想出了这个解决方案来搜索多个模型 但它似乎只适用于列出的第一个模型 搜索控制器:Ruby on rails rails 3在多个模型之间搜索,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想避免一些宝石,所以我想出了这个解决方案来搜索多个模型 但它似乎只适用于列出的第一个模型 搜索控制器: def index @products = Product.search(params[:search]).paginate(:per_page => 5, :page => params[:page]) @manufacturer_name = Manufacturer.search(params[:search]).paginate(:per_page =&g
def index
@products = Product.search(params[:search]).paginate(:per_page => 5, :page => params[:page])
@manufacturer_name = Manufacturer.search(params[:search]).paginate(:per_page => 5, :page => params[:page])
@category_name = Category.search(params[:search]).paginate(:per_page => 5, :page => params[:page])
end
在我的3款车型中,我都是这样的:
def self.search(search)
if search
where('name LIKE ? ', "%#{search}%")
else
scoped
end
搜索#索引
我为每一个模型分别准备了部分
但当我搜索名字的时候,它肯定应该在所有类别中。但并没有找到结果,只有在我运行搜索产品名称时。然后我得到我想要的结果
任何小费都行。Tnx它只是重构创建名称范围,如下所示
scope :by_name,lambda{|name| where("name like (?)","%#{name}%") if name.present?}
# In controller
Product.by_name(params[:search]).paginate(:per_page => 5, :page => params[:page])
不需要在模型中使用search
方法,最好编写范围,除非您正在进行一些复杂的检查
第二,尝试在控制台中查看您是否根据搜索参数获得搜索结果?在产品或类别名称中有名称的产品中搜索,然后返回产品?@Amar我在三种型号中启用了此搜索。产品、类别、制造商。所有这些都有字段名。在一个搜索表单中搜索所有这些。选中此项:键入“pez”它将返回产品名称,然后“CMI”应返回制造商名称,但不返回。Tnx,我应在模型中添加的第一行?
scope :by_name,lambda{|name| where("name like (?)","%#{name}%") if name.present?}
# In controller
Product.by_name(params[:search]).paginate(:per_page => 5, :page => params[:page])