Не удается заставить пользовательские страницы ошибок работать в Padrino

Я начал создавать сайт с Падрино. На данный момент основной класс моего приложения — самая простая вещь в мире:

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

Итак, представления — это просто html — идея заключается в том, чтобы использовать angularjs для рендеринга всех вещей, предоставляемых остальным API. Думаю, это довольно стандартно.

Моя проблема в том, что хотя он отлично работает для рендеринга домашней страницы (localhost: 3000/), пользовательская ошибка не работает вообще; скажем, я пробую localhost:3000/test - вместо этого отображается стандартная страница «Синатра не знает эту частушку».

Я использую padrino 0.12.4 с WEBrick 1.3.1. Что я здесь делаю неправильно?


person jahmaican    schedule 23.03.2015    source источник


Ответы (1)


Я считаю, что здесь происходит то, что когда вы переходите на localhost: 3000/test, ваше приложение Sinatra ищет действие «тест» в вашем контроллере приложений. Очевидно, что это действие не найдено, потому что оно не указано в качестве маршрута! Поэтому явно скажите Синатре вернуть страницу 404, если дидди не найден:

error Sinatra::NotFound do
  content_type 'text/plain'
  [404, 'Not Found']
end
person Community    schedule 23.03.2015
comment
На самом деле да, простая замена «404» на «Sinatra::NotFound» сделала именно то, что я хотел. - person jahmaican; 01.04.2015