2011-12-22 1 views
2

Я работаю над API своего веб-приложения. Это приложение Rails 2, и REST API отвечает на XML.Обратное сообщение об ошибке в ответе XML

Например, мне нужно вернуть ошибку, если она не сможет отменить подписку на контакт из списка. Поэтому я отвечаю с Unprocessable Entity (422), с сообщением об ошибке в XML. Это фактический код:

respond_to do |format| 
    begin 
    ... 
    format.xml { head :ok } 
    rescue => e 
    format.xml { render :xml => e.to_s, :status => :unprocessable_entity } 
    end 
end 

Проблема заключается в том, что в другой стороне, когда кто-то сделать заявку с помощью ActiveResouce ошибка приходит с сообщением пустой, как это:

ActiveResource::ResourceInvalid: Failed. Response code = 422. Response message = . 

Есть ли XML-структуру или тег, которые мне нужно включить в ответ, в ответное сообщение не пусто?

Благодаря

+0

Я проверил бы отладочный отладчик везде, где будет вызываться ошибка format.xml - столбец может быть другим. – Reactormonk

ответ

1

Это не выглядит правильно мне:

format.xml { render :xml => e.to_s, :status => :unprocessable_entity } 

render :xml, должен быть передан в строку XML. Попробуйте заменить его чем-то вроде этого:

format.xml { render :xml => "<message ='#{e.to_s}'/>", :status => :unprocessable_entity } 
+0

Спасибо. Я пробовал, но сообщения об ошибках все еще пусты. – pedroaxl

0

документация Rails ActiveResource проверки говорится, что он ожидает, ошибки в формате XML с:

<errors><error>First cannot be empty</error></errors> 

Я думаю, что разработано, чтобы прийти из хэша ошибки проверки объекта (например, render :xml => record.errors). Не совсем уверен, почему вы хотите поймать исключение, хотя это должно указывать на гораздо более серьезную проблему, более похожую на ошибку сервера.

 Смежные вопросы

  • Нет связанных вопросов^_^