2012-05-09 3 views
2

Из того, что я прочитал, я могу ответить на запрос JSON, используя следующий код:Как вернуть объект JSON в Rails без использования визуализации: JSON

respond_to do |format| 
    format.json { render json: t.response } 
end 

Моя проблема заключается в том, что t.response является уже в формате json - и я думаю, что мое приложение ломается, потому что render json: переконвертирует его в json. Как мне избежать этого и просто вернуть t.response.

Обратите внимание, что если у меня просто есть t.response в качестве моей последней строки в контроллере, отображается соответствующее представление - это, очевидно, не json.

Спасибо!

EDIT: Я пытаюсь получить эту работу, поэтому я могу отправить sms через tropo. Если вы уже использовали tropo, есть ли у вас какие-либо рекомендации, как правильно откликнуться на tropo?

ответ

2

Я покажу вам, как Rails сделок с преобразованием в формат JSON. Это в основном на линии:

json = json.to_json(options) unless json.kind_of?(String) 

Таким образом, строки не конвертируется, другие объекты преобразуются в строку с помощью их метода to_json. Если ваш t.response возвращает строку, преобразование не выполняется.

1

Вы можете отображать текст вместо

respond_to do |format| 
    format.json { render text: t.response } 
end 
5

render json: просто задает тип содержимого для приложения/JSON (и вызывает to_json на объект передается на него, если объект отвечает на to_json). Он не конвертирует или каким-то образом не изменяет ваш ответ.

http://apidock.com/rails/ActionController/Base/render

+0

* если объект отвечает на to_json *. Это забавно, но ВСЕ объекты в Rails отвечают на 'to_json', поэтому нет необходимости выполнять проверку. Даже '42.to_json' будет работать. – jdoe

+0

Справа. Должен сначала проверять документы :( –

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