error-handling - 如何在 Sinatra 中自定义 ActiveRecord::RecordNotFound

标签 error-handling sinatra

在我的 app.rb 中,我有一个 get '/posts/:id' 我已经实现了救援 ActiveRecord:RecordNotFound 但不是重定向到根 URL仍然显示错误。有没有办法自定义 ActiveRecord 错误,例如自定义路由错误 (not_found)

not_found do
  slim :not_found
end

get '/posts/:id' do
  begin
    @post = Post.find(params[:id])
    rescue ActiveRecord::RecordNotFound => e
      redirect '/'#or display a view or a flash-notice
  end
    slim :show_post
end

最佳答案

Sinatra Book recommends设置“错误”路由并定义您想要运行的自定义错误。在你的情况下,它看起来像这样

error ActiveRecord::RecordNotFound do
  redirect '/'
end

注意:只要您的 Sinatra 应用程序设置为“开发”环境,您仍然会看到带有堆栈跟踪的错误页面。您可以在运行 Sinatra 时将其设置为其他环境:

ruby app.rb -e production 

更多关于Sinatra environments here .

关于error-handling - 如何在 Sinatra 中自定义 ActiveRecord::RecordNotFound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22258052/

相关文章:

php - jQuery和AJAX上的错误报告

php - 尝试发送给尚未安装我们应用程序的用户时,Facebook对用户的通知会中断

ruby - `<module:Templates>':使用 Sinatra/Unicorn 的未初始化常量 Tilt::CompileSite (NameError)

ruby - Sinatra 设置设置 (Ruby)

r - 在R中使用randomForest输入类型不匹配错误

error-handling - Checkit 与书架,如何捕获错误并停止 DB 执行?

ruby - 如何将数据从我的 sinatra 应用程序中的类传递到 websocket-rack?

sinatra - 在 Sinatra 上启用 CSRF

ruby - 如何连接到 dockerized Sinatra 应用程序

javascript - 什么 HTTP 状态代码在 XMLHttpRequest 上触发错误事件