在我的app.rb中我有一个get '/posts/:id'
我已经实现了一个救援 ActiveRecord:RecordNotFound ,但它没有重定向到根网址,它仍然显示错误。有没有办法自定义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
答案 0 :(得分:2)
Sinatra Book recommends设置错误'路由并定义要通过它运行的自定义错误。在你的情况下,它看起来像这样
error ActiveRecord::RecordNotFound do
redirect '/'
end
注意:只要您的Sinatra应用程序设置为"开发"您将仍然会看到带有堆栈跟踪的错误页面。环境。运行Sinatra时可以将其设置为其他环境:
ruby app.rb -e production