app/controllers/products_controller.rb
class ProductsController < ApplicationController
def index
products = Product.active.includes(:variants)
product_types = nil
if params[:product_type_id].present? && product_type = ProductType.find_by_id(params[:product_type_id])
product_types = product_type.self_and_descendants.map(&:id)
end
if product_types
@products = products.where(product_type_id: product_types).
paginate(page: pagination_page, per_page: pagination_rows)
else
@products = products.paginate(page: pagination_page, per_page: pagination_rows)
end
end
def create
if params[:q] && params[:q].present?
@products = Product.standard_search(params[:q]).results
else
@products = Product.where('deleted_at IS NULL OR deleted_at > ?', Time.zone.now )
end
render :template => '/products/index'
end
def show
@product = Product.friendly.active.find(params[:id])
form_info
@cart_item.variant_id = @product.active_variants.first.try(:id)
end
private
def form_info
@cart_item = CartItem.new
end
def featured_product_types
[ProductType::FEATURED_TYPE_ID]
end
def pagination_rows
params[:rows] ||= 60
params[:rows].to_i
end
end