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