我在rails上验证ruby中的输入字段。我检查用户是否输入或填写了这些字段。如果我们说name
字段未填写,则向用户发送错误消息,表明name
字段未填充。其他错误也是如此。如何使用ruby on rails在json中发送此类消息。
这就是我现在正在做的事情。
这个模型
validates :email, :name, :company, :presence => true
validates_format_of :email, :with => /\A[a-z0-9!#\$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#\$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\z/
以下是我目前如何向客户端发送json数据
@contacts = Contact.new(params[:contact])
if @contacts.save
render :json => { :error => 0, :success => 1 }
else
render :json => { :error => 1, :success => 0 }
end
答案 0 :(得分:15)
最简单的方法是发送错误的哈希值。
这样:
render :json => { :errors => @contacts.errors.as_json }, :status => 420
请注意,需要使用:status => 420
来使jquery的$ .ajax方法调用它们的错误回调,并且在出现错误时不应该返回200状态(默认值)。
答案 1 :(得分:1)
你真的应该使用http状态代码告诉用户发生了什么,所以对于无效记录有
420 Invalid Record Record could not be saved
然后在您的JSON返回中,您还可能会收到一条错误消息,该消息会返回其中的活动记录/活动模型错误消息,以便为其提供更多信息。