Я подключаю наше приложение Rails (3.2) к внешней веб-службе (монитору кампании), которая требует нескольких вызовов в свою систему для установки клиента.Работа с пользовательскими кодами исключений из отказавшего вызова API
Я поместил каждое действие в отдельные блоки спасения и завернул в транзакцию, но все выглядит не так хорошо. Мне нужно, чтобы он сбежал после каждой ошибки и отобразил правильное сообщение. В настоящее время он просто убегает.
У меня есть список возможных ошибок за действие - как можно их прочитать и форматировать как флэш-сообщение?
Например, следующее сообщение об ошибке:
CreateSend::BadRequest: The CreateSend API responded with the following error - 172: You can create a maximum of five (5) clients per thirty (30) minutes
настоящее время у меня это в моем контроллере:
def create_send_setup
...
begin
client = CreateSend::Client.create(@user.company_name, @user.username, @user.email, "(GMT) Dublin, Edinburgh, Lisbon, London", @user.country)
rescue
flash[:notice] = "Uh oh, there's been a problem. Please try again. Client"
end
begin
@client = CreateSend::Client.new(@user.createsend_client_api)
@client.set_access(@user.username, @password, @user.createsend_access_level)
@client.set_monthly_billing(@user.createsend_currency, true, @user.createsend_markup)
rescue
flash[:notice] = "Uh oh, there's been a problem. Please try again. Access"
end
flash[:notice] = "Great, now you just need to choose a plan"
redirect_to edit_user_registration_path
end
В предыдущей интеграции, я использовал что-то вроде
case bla.code.to_s
when /2../
when '403'
raise "Could not update subscriber: new-customer-id is already in use."
...
end
Каков наилучший способ извлечения кода ошибки из ответа и отображения в виде флэш-сообщения?
спасибо, посмотрим – simonmorley
есть ли другой способ получить исключение? В настоящее время это дает мне «неопределенный метод' match 'для # " –
simonmorley
Извините, вам нужно позвонить' match' на 'ex.message', а не' ex'. Обновлен мой ответ. – JeanMertz