2013-09-19 2 views
1

Вот код для отправки json-ответа, связанного с рабочим и нерабочим статусом. Кто-нибудь имеет рекомендации по другим ресурсам? Это не работает. Спасибо.как вы пишете ответ json правильно уничтожаете методы в рельсах?

if @content.destroy 
    format.json { redirect_to @collection, status: :destroyed, notice 'Content was removed from collection.' }, :status => 200 
else 
    format.json { render json @content.errors, status: :unprocessable_entity }, :status => 400 
end 
+0

Какая структура/приложение вы используете для связи с вашим сервером? –

+0

Я в рельсах, а затем используя javascript для перехвата через магистральный маршрутизатор или ajax – LMo

+0

и почему эта реализация не работает для вас? вы не можете исключить исключение в своем ajax? –

ответ

-1

TL; DR: если вы используете какую-то рамку, JS, а затем посмотреть, как эта структура хочет успех и ответ отказа выглядеть, если вы катитесь самостоятельно - то делать все, что имеет больше смысла для вас.

Длинная версия:

Есть несколько способов вы можете вернуть ответ от рельсов на ваш веб-приложение. Rails по умолчанию возвращает код состояния 2xx для успеха и 4xx для неудачных запросов. Некоторые веб-фреймворки, такие как Extjs, вроде receive response with 200 code always and look at success key in the response to see if the request was successfult. Если вы пишете свой собственный JS, который использует XHR, то вы можете делать все, что захотите: до того, как вы создаете свой API. Я считаю, это полезно вернуть JSON ответ от сервера с 200 кодом и установить ключ успеха в истинный или ложный, так в моем обратном вызове JS я могу написать что-то вроде:

if(request.data.success){ 
    successfulPost(response); 
} else { 
    failed(response); 
} 

одной из причин, почему я предпочитаю такой подходом является то, что, если есть исключение, то я действительно могу отличить от записи, которая не сохраняется из-за ошибок проверки, а не ошибка в коде, вызвавшем исключение. Но это личное предпочтение, и некоторые могут утверждать, что ошибка является ошибкой, и не имеет значения, что вызвало ее.

+0

Спасибо за ваш комментарий. Я использую Backbone.js в своем проекте. Я думаю, что я немного смущен синтаксисом, который входит в ответ. У вас есть больше ресурсов? Еще раз спасибо. – LMo