Вы можете легко достичь этого формата ошибок, добавив ActionController :: Responder для вашего формата JSON.См. http://api.rubyonrails.org/classes/ActionController/Responder.html (крайне расплывчатую) документацию по этому классу, но в двух словах вам необходимо переопределить метод to_json.
В приведенном ниже примере я вызываю закрытый метод вActionController: ответчик, который будет создавать ответ json, включая настроенный ответ на ошибку по вашему выбору;все, что вам нужно сделать, это заполнить пробелы, на самом деле:
def to_json
json, status = response_data
render :json => json, :status => status
end
def response_data
status = options[:status] || 200
message = options[:notice] || ''
data = options[:data] || []
if data.blank? && !resource.blank?
if has_errors?
# Do whatever you need to your response to make this happen.
# You'll generally just want to munge resource.errors here into the format you want.
else
# Do something here for other types of responses.
end
end
hash_for_json = { :data => data, :message => message }
[hash_for_json, status]
end