X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/071c3581e94552e5da08a2eed14e9a69e4f87e4f..ef7f3d800cbdd49b692df10d312e5fd880e2e938:/app/controllers/search_controller.rb diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb index 408b4a662..7cd6f4ca7 100644 --- a/app/controllers/search_controller.rb +++ b/app/controllers/search_controller.rb @@ -6,23 +6,25 @@ class SearchController < ApplicationController after_filter :compress_output def search_all - do_search(true,true,true) + do_search(true, true, true) end def search_ways - do_search(true,false,false) + do_search(true, false, false) end + def search_nodes - do_search(false,true,false) + do_search(false, true, false) end + def search_relations - do_search(false,false,true) + do_search(false, false, true) end - def do_search(do_ways,do_nodes,do_relations) + def do_search(do_ways, do_nodes, do_relations) type = params['type'] value = params['value'] - unless type or value + unless type || value name = params['name'] if name type = 'name' @@ -32,13 +34,13 @@ class SearchController < ApplicationController if do_nodes response.headers['Error'] = "Searching of nodes is currently unavailable" - render :nothing => true, :status => :service_unavailable + render :text => "", :status => :service_unavailable return false end unless value response.headers['Error'] = "Searching for a key without value is currently unavailable" - render :nothing => true, :status => :service_unavailable + render :text => "", :status => :service_unavailable return false end @@ -48,6 +50,8 @@ class SearchController < ApplicationController nodes = nodes.where(:current_node_tags => { :k => type }) if type nodes = nodes.where(:current_node_tags => { :v => value }) if value nodes = nodes.limit(100) + else + nodes = [] end # Matching for way tags table @@ -56,6 +60,8 @@ class SearchController < ApplicationController ways = ways.where(:current_way_tags => { :k => type }) if type ways = ways.where(:current_way_tags => { :v => value }) if value ways = ways.limit(100) + else + ways = [] end # Matching for relation tags table @@ -64,10 +70,12 @@ class SearchController < ApplicationController relations = relations.where(:current_relation_tags => { :k => type }) if type relations = relations.where(:current_relation_tags => { :v => value }) if value relations = relations.limit(2000) + else + relations = [] end # Fetch any node needed for our ways (only have matching nodes so far) - nodes += Node.find(ways.collect { |w| w.nds }.uniq) + nodes += Node.find(ways.collect(&:nds).uniq) # Print visible_nodes = {}