2012-05-09 3 views
2

私が読んだものから、私は次のコードを使用してJSONの要求に応えることができます。どのようにレンダリング使用せずに、Railsの中にJSONオブジェクトを返すために:JSON

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

私の問題はt.responseがあるということですすでにjson形式です。そして、私は、render jsonがjsonに再変換しているので、私のアプリが壊れていると思います。どうすればこの問題を回避でき、単にt.responseを返すだけです。

コントローラーの最後の行にt.responseを付けるだけで、対応するビューが表示されることに注意してください。これは明らかにjsonではありません。

ありがとうございます!

編集:私はトロポを介してSMSを送ることができるようにこれを取得しようとしています。以前にトロポを使用していた場合、トロポに正しく返答する方法はありますか?

答えて

2

私はRailsはJSON形式への変換を扱う方法を紹介します。これは、ライン上で基本的にです:

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

だから、文字列が変換されない、他のオブジェクトは、その to_jsonメソッドを介してStringに変換されます。 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

右。最初にドキュメントをチェックする必要があります:( –