From 88dfb33721fbf1a83feb7c9386fa7dfdba61aea2 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Tue, 6 Aug 2013 23:36:48 +0200 Subject: [PATCH] Return results for packages only with screenshots. Currently the packages controller is not working well. The JOIN is not the best way apparently as the 'description' column exists for both the "packages" and the "screenshots" table. So another way to query for the data needs to be found. --- app/controllers/packages_controller.rb | 12 +++++++++--- app/views/packages/_packages_search_results.html.erb | 3 ++- app/views/packages/index.html.erb | 3 +++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/controllers/packages_controller.rb b/app/controllers/packages_controller.rb index 9d379db..ee3ffac 100644 --- a/app/controllers/packages_controller.rb +++ b/app/controllers/packages_controller.rb @@ -1,13 +1,19 @@ class PackagesController < ApplicationController def index + @packages = Package + + if params[:with_screenshots]=='yes' + @packages = @packages.joins(:screenshots).where('screenshots.approved = ?', true) + end + if params[:search] query = '%'+params[:search]+'%' # TODO: Index on lower(…) is missing. Does not scale. # TODO: Consider using a serious search engine like Xapian or ElasticSearch. - @packages = Package.where("lower(description) like lower(?) or lower(name) like lower(?)", query, query).order('name').first(20) - else - @packages = Package.order('name').first(20) + @packages = @packages.where("lower(description) like lower(?) or lower(name) like lower(?)", query, query) end + + @packages = @packages.order('name').limit(20) end def with_screenshots diff --git a/app/views/packages/_packages_search_results.html.erb b/app/views/packages/_packages_search_results.html.erb index 4f4fa0f..c104869 100644 --- a/app/views/packages/_packages_search_results.html.erb +++ b/app/views/packages/_packages_search_results.html.erb @@ -1,6 +1,7 @@ <%# Show search results %> -<% if @packages %> +<% if @packages.count>0 %> +

Class=<%= @packages.class %>