App1
にAPIエンドポイントを設定し、App2
からユーザーレコードを作成するために投稿しています。JSON応答が引用符で囲まれる原因は何ですか?
私はApp1
にJSONで応答するように設定しましたが、JSON応答は引用符で囲まれています(バックスラッシュで囲まれています)。引用符をエスケープするためにバックスラッシュが使用されていることは理解していますが、まだ変わっています。
予想される応答
{id:8, first_name:"Long", last_name:"John Silver", email:"[email protected]", temp_password:"ydKrDdd9zbrGzrm-uMK8"}
実際の応答
"{\"id\":8,\"first_name\":\"Long\",\"last_name\":\"John Silver\",\"email\":\"[email protected]\",\"temp_password\":\"ydKrDdd9zbrGzrm-uMK8\"}"
ルート
namespace :api do
namespace :v1 do
resources :users, :defaults => { :format => 'json' }
end
end
コントローラ
def create
@user = User.new(user_params)
@user.temp_password = Devise.friendly_token
if @user.save
render json: @user
else
render json: {res: "Something went wrong"}
end
end
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :temp_password)
end
は、それが上記の「期待される応答」のような応答を取得することはできますか? これは何が原因でしょうか?
ありがとうございました。
私はRuby on Railsについて何も知らないが、何かがレンダリングされているように見える* 2回:初めてUserオブジェクトからJSON(文字列など)に正しく変換されるが、 JSON *として再度*。文字列値をJSONレンダラーに渡すだけで、JSONレンダラーの前後に引用符が置かれ、その中に引用符がエスケープされます。それで、私は、レンダリングの余分な層のために見ています。 –