Jamie Forrest
Jamie Forrest

Reputation: 11113

How do I pass data to an error handler?

I want to create an error handler that sets the body of the response depending on the nature of the error. Something like this:

@the_error = Hash.new

get '/' do
 @the_error[:message] = "error message"
 400
end

error 400 do
 @the_error[:message]
end

But this doesn't work as expected (the @the_error variable is Nil when in the get handler). What am I doing wrong, or perhaps there's a better way to do this?

Upvotes: 0

Views: 165

Answers (1)

Vasiliy Ermolovich
Vasiliy Ermolovich

Reputation: 24617

Use built-in settings for this:

require 'sinatra'

set :the_error, Hash.new

get '/' do
  options.the_error[:message] = "error message"
  400
end

error 400 do
  options.the_error[:message]
end

Upvotes: 1

Related Questions