错误处理 – 使用Sinatra显示错误消息

我正在编写一个简单的应用程序,它接受用户的标准输入.至于电子邮件条目,我让它验证它是否是标准的电子邮件格式,然后让它在要保存新实例时列出这样的问题:

u = User.new
u.email = params[:email]
u.save
if u.save
  redirect '/'
else
  u.errors.each do |e|
    puts e
  end
end

我知道如果它是正确的,它应该返回主页.如果它是错的我也希望它返回主页,但我希望它返回一个错误值(所以我可以弹出窗口或只是屏幕上的东西让用户知道电子邮件的格式是错误的).最好的方法是什么?

最佳答案
您可以使用’sinatra-flash‘宝石来显示各种错误/通知等.

u = User.new
u.email = params[:email]
u.save
if u.save
  redirect '/'
else
  flash[:error] = "Format of the email was wrong."
  redirect '/'
end

然后你需要说出你想要显示flash [:error]的位置.通常我把它放在layout.haml或(erb)文件的正上方我在内容中产生的位置.

layout.haml:

- if flash[:error]
  %p
    = flash[:error]

此外,请确保包含gem并启用会话

require 'sinatra'
require 'sinatra/flash'

enable :sessions

你也可以尝试’rack-flash‘宝石.有一个在http://ididitmyway.heroku.com/past/2011/3/15/rack_flash_/使用它的教程

转载注明原文:错误处理 – 使用Sinatra显示错误消息 - 代码日志