【问题标题】:sending error message in json using ruby on rails在 json 中使用 ruby​​ on rails 发送错误消息
【发布时间】:2012-07-21 09:17:15
【问题描述】:

我正在验证 ruby​​ on rails 中的输入字段。我检查用户是否输入或填写了这些字段。如果假设name 字段未填写,则向用户发送一条错误消息,指示name 字段未填写。其他错误也是如此。如何在 json 中使用 ruby​​ on rails 发送这种消息。

这就是我现在正在做的事情。

这个模型

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

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 json


    【解决方案1】:

    最简单的方法是发送错误的哈希值。

    所以:

    render :json => { :errors => @contacts.errors.as_json }, :status => 420
    

    请注意,:status => 420 是让 jquery 的 $.ajax 方法调用它们的错误回调所必需的,并且当出现错误时,您永远不应该返回 200 状态(默认值)。

    【讨论】:

    【解决方案2】:

    你真的应该使用http状态码来告诉用户发生了什么,所以对于无效记录有

    420 Invalid Record  Record could not be saved
    

    然后在您的 JSON 返回中,您还可能有一条错误消息,其中将返回您的活动记录/活动模型错误消息,以提供更多信息。

    【讨论】:

    猜你喜欢
    • 2016-06-18
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多