2

私が読んだものから、次のコードを使用してjsonリクエストに応答できます。

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

私の問題は、t.responseがすでにjson形式になっていることです。renderjson:がjsonに再変換しているため、アプリが壊れていると思います。これを回避し、単にt.responseを返すにはどうすればよいですか。

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

ありがとう!

編集:私はこれを機能させようとしているので、トロポ経由でSMSを送信できます。以前にtropoを使用したことがある場合、tropoに正しく応答する方法について何か提案はありますか?

4

3 に答える 3

5

render json:コンテンツ タイプを application/json に設定するだけです (to_jsonオブジェクトが に応答する場合は、それに渡されたオブジェクトを呼び出しますto_json)。応答を変換したり、何らかの形で変更したりしません。

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

于 2012-05-09T20:47:39.087 に答える
2

Railsがjson形式への変換をどのように処理するかを紹介します。それは基本的にオンラインです:

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

したがって、文字列は変換されず、他のオブジェクトはそれらのto_jsonメソッドを介して文字列に変換されます。t.response文字列を返す場合、変換は実行されません。

于 2012-05-09T20:58:38.457 に答える
1

代わりにテキストをレンダリングできます

respond_to do |format|
  format.json { render text: t.response }
end
于 2012-05-09T20:33:49.720 に答える