public function indexRequest $request 创建一个查询构造器 $builder = Productquery-whereon_sale true; 判断是否有提交 search 参数如果有就赋值给 $search 变量 search 参数用来模糊搜索商品 if $search =
def index
创建一个查询构造器
builder = Product.where(on_sale: true)
判断是否有提交 search 参数,如果有就赋值给 search 变量
search 参数用来模糊搜索商品
if params[:search].present? like = "%#{params[:search]}%" # 模糊搜索商品标题、商品详情、SKU 标题、SKU描述 builder = builder.where("title LIKE ? OR description LIKE ? OR id IN ( SELECT product_id FROM skus WHERE title LIKE ? OR description LIKE ?)", like, like, like, like) end
是否有提交 order 参数,如果有就赋值给 order 变量
order 参数用来控制商品的排序规则
if params[:order].present? # 是否是以 _asc 或者 desc 结尾 if params[:order] =~ /^(.+)(asc|desc)$/ # 如果字符串的开头是这 3 个字符串之一,说明是一个合法的排序值 if ['price', 'sold_count', 'rating'].include?($1) # 根据传入的排序值来构造排序参数 builder = builder.order("#{$1} #{$2}") end end end
@products = builder.paginate(page: params[:page], per_page: 16)
render 'products/index' en
原文地址: https://www.cveoy.top/t/topic/idSQ 著作权归作者所有。请勿转载和采集!