jahmaican
jahmaican

Reputation: 162

Can't get custom error pages to work in Padrino

I started to build a website with padrino. At the moment the main class of my app is the simplest thing in the world:

class App < Padrino::Application
  enable :sessions

  get :index do
    send_file 'public/view/index.html'
  end

  error 404 do
    send_file 'public/view/errors/404.html'
  end
end

So the views are simply htmls - the idea behind it is to use angularjs to render all the thingies provided by a rest api. I guess that's fairly standard.

My problem is - although it works fine for rendering the home page (localhost:3000/), the custom error doesn't work at all; let's say I try localhost:3000/test - the standard "Sinatra doesn’t know this ditty" page is rendered instead.

I'm running padrino 0.12.4 with WEBrick 1.3.1. What am I doing wrong here?

Upvotes: 1

Views: 343

Answers (1)

user3720516
user3720516

Reputation:

I believe what's going on here is that when you go to localhost:3000/test, your Sinatra app is looking for the "test" action under your App Controller. Obviously this action is not being found because it's not listed as a route! Therefore explicitly tell Sinatra to return a 404 page if the diddy wasn't found:

error Sinatra::NotFound do
  content_type 'text/plain'
  [404, 'Not Found']
end

Upvotes: 1

Related Questions