Я отправляю данные с помощью ajax-вызова на сторонний api, чтобы узнать, поддерживает ли плата платеж, после чего я получаю ответ в payment#new
действии payment#new
, я просто не знаю, как показать ответ на просмотр.
ajax-вызов;
$.ajax({
type: "GET",
url: "/payments/new",
dataType: "json",
data: {card_digit},
success: function(data) {},
error: function(jqXHR) {}
});
payments#new
действие
def new
...
...
uri = URI.parse("https://...")
https = Net::HTTP.new(uri.host,uri.port)
https.use_ssl = true
req = Net::HTTP::Post.new(uri.path, @headers)
req.body = @body.to_json
res = https.request(req)
puts "Response #{res.code} #{res.message}: #{res.body}"
end
Затем здесь он возвращает res.body как объект json, я хотел бы показать это в представлении, которое я попытался назначить переменной, например @return, затем использовать ее в представлении, но нет шансов, я попытался ответить на блок, но не смог Удалось это сделать.
РЕДАКТИРОВАТЬ
Спасибо за ответ !, Но теперь я получаю ошибку Encoding::UndefinedConversionError ("\xC4" from ASCII-8BIT to UTF-8)
res.body возвращается;
{"bankId":"13","bankName":"...","cardFamilyId":"..","cardFamilyName":"...","cardThreeDSecureMandatory":"0","merchantThreeDSecureMandatory":"0","result":"1","serviceProvider":"2","supportsInstallment":"1","type":"1"}
Я написал;
render json: { res_body: res.body }
и console.log(data)
в функции успеха
почему это произойдет?
РЕДАКТИРОВАТЬ
я добавил
render json: { res_body: JSON.parse(res.body) }
Если вы используете Ajax, тогда вы должны обработать его в своем JavaScript-коде, чтобы изменить свое представление.
Используйте это в своем контроллере для передачи данных на ваш вызов Ajax (замените фиктивный хеш):
render json: { test: "hello" }
В вашей успешной функции ajax объект JSON, который я только что просмотрел, будет доступен в параметре данных функции. Теперь мне нужно манипулировать представлением с помощью javascript
РЕДАКТИРОВАТЬ:
Чтобы ответить на ваши изменения, я думаю, у вас есть некоторые символы, которые сложнее обрабатывать в вашем JSON, например, китайском, турецком,.... Может быть, это может помочь вам Encoding :: UndefinedConversionError