我正在開發一個使用Sinatra和DataMapper的RESTful API。當我的模型未通過驗證時,我想返回JSON以指示哪些字段出錯。 DataMapper爲我的模型DataMapper::Validations::ValidationErrors
添加了一個「錯誤」屬性。我想返回此屬性的JSON表示。如何在Sinatra中序列化DataMapper :: Validations :: ValidationErrors to_json?
這裏有一個單一文件的例子(愛是愛的Ruby /西納特拉/ DataMapper的!):
require 'sinatra'
require 'data_mapper'
require 'json'
class Person
include DataMapper::Resource
property :id, Serial
property :first_name, String, :required => true
property :middle_name, String
property :last_name, String, :required => true
end
DataMapper.setup :default, 'sqlite::memory:'
DataMapper.auto_migrate!
get '/person' do
person = Person.new :first_name => 'Dave'
if person.save
person.to_json
else
# person.errors - what to do with this?
{ :errors => [:last_name => ['Last name must not be blank']] }.to_json
end
end
Sinatra::Application.run!
在我的實際應用,我在處理一個POST或PUT,反而使問題容易地被複制,我正在使用GET,因此您可以使用curl http://example.com:4567/person
或瀏覽器。
所以,我有什麼是person.errors
和JSON輸出我要找的是像什麼年代由哈希生成:
{"errors":{"last_name":["Last name must not be blank"]}}
我有什麼做的就是將DataMapper::Validations::ValidationErrors
成JSON格式的我想?
是的,這是一種做法,對我來說要求有點不同。如果你正在尋找錯誤消息的響應'JSON'檢查我的答案。 – ch4nd4n
有趣...感謝您的信息。對我而言,我需要將錯誤消息與客戶端上表單上的輸入字段相關聯。該名稱是進行該關聯所必需的。 – AnyWareFx