From 3d0f2130dab94f33b0e73d9304c2fdc527fff106 Mon Sep 17 00:00:00 2001 From: Steve Coast Date: Sat, 3 May 2008 14:29:01 +0000 Subject: [PATCH] fix bug 871 - show a good error message if gps trace not found --- app/controllers/trace_controller.rb | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/app/controllers/trace_controller.rb b/app/controllers/trace_controller.rb index 4db6e8e15..3bb0d3323 100644 --- a/app/controllers/trace_controller.rb +++ b/app/controllers/trace_controller.rb @@ -83,6 +83,13 @@ class TraceController < ApplicationController def view @trace = Trace.find(params[:id]) + + unless @trace + flash[:notice] = "OH NOES! Trace not found!" + redirect_to :controller => 'trace', :action => 'list' + return + end + @title = "Viewing trace #{@trace.name}" if !@trace.visible? render :nothing => true, :status => :not_found @@ -90,7 +97,8 @@ class TraceController < ApplicationController render :nothing => true, :status => :forbidden end rescue ActiveRecord::RecordNotFound - render :nothing => true, :status => :not_found + flash[:notice] = "GPX file not found" + redirect_to :controller => 'trace', :action => 'list' end def create @@ -107,11 +115,11 @@ class TraceController < ApplicationController end else @trace = Trace.new({:name => "Dummy", - :tagstring => params[:trace][:tagstring], - :description => params[:trace][:description], - :public => params[:trace][:public], - :inserted => false, :user => @user, - :timestamp => Time.now}) + :tagstring => params[:trace][:tagstring], + :description => params[:trace][:description], + :public => params[:trace][:public], + :inserted => false, :user => @user, + :timestamp => Time.now}) @trace.valid? @trace.errors.add(:gpx_file, "can't be blank") end @@ -196,7 +204,7 @@ class TraceController < ApplicationController conditions[0] += " AND users.display_name = ?" conditions << params[:display_name] end - + if params[:tag] conditions[0] += " AND EXISTS (SELECT * FROM gpx_file_tags AS gft WHERE gft.gpx_id = gpx_files.id AND gft.tag = ?)" conditions << params[:tag] @@ -286,7 +294,7 @@ class TraceController < ApplicationController end end -private + private def do_create(file, tags, description, public) name = file.original_filename.gsub(/[^a-zA-Z0-9.]/, '_') @@ -295,7 +303,7 @@ private File.open(filename, "w") { |f| f.write(file.read) } @trace = Trace.new({:name => name, :tagstring => tags, - :description => description, :public => public}) + :description => description, :public => public}) @trace.inserted = false @trace.user = @user @trace.timestamp = Time.now -- 2.43.2