#ruby-on-rails #ruby #ruby-on-rails-4 #ruby-on-rails-5
Вопрос:
У меня есть API Rails, который отображает некоторые данные в формате JSON. Ответ выглядит хорошо, когда пользователь вводит открытый текст. Но когда я добавляю html-теги или специальные символы, такие как»», во входные данные, они преобразуются в символы юникода. Я хотел бы отобразить все это как строку, независимо от того, что добавляет пользователь. Я пробовал использовать to_s
, но это все равно не преобразует эти биты в строку.
result.each do |row|
i = row["i"].to_s
j = row["j"].to_s
obj[i][j] = {}
obj[i][j]["name"] = row["name"].to_s
end
Given: <p>name</p>
Output :u003cpu003enameu003c/pu003e
Expected output: <p>name</p>
Комментарии:
1. Не уверен, почему он возвращает символы Юникода. Вы пробовали принудительно кодировать кодировку в UTF-8 ? Кроме того, я подумываю об использовании
raw(<String>)
или<String>.html_safe
2. @Sumak да, на самом деле это показывает тот же результат. Не анализирует его в html-теги
3. Я не понимаю, как вы думаете, что сможете передавать
"
в JSON, не избегая его, поскольку это зарезервированный символ? Это пахнет как вопрос Xamp;Y.
Ответ №1:
Вы отображаете данные в формате JSON. Вот как выглядят эти символы в виде строки JSON.
'<p>name</p>'.to_json
=> ""\u003cp\u003ename\u003c/p\u003e""
JSON.parse ""\u003cp\u003ename\u003c/p\u003e""
=> "<p>name</p>"