Почему метод rails html_safe меняет мою структуру html? - PullRequest
1 голос
/ 09 марта 2020

Я передаю самозакрывающийся якорный тег без текстового значения, только с именем:

<% test = '<h4><a name="139-01"/>test</h4>' %>

Когда я выводю значение, оно выглядит следующим образом:

<h4><a name="139-01"/>test</h4>

Затем я пытаюсь использовать .html_safe, чтобы вывести его в виде html тега

<%= test.html_safe %>

Получившийся код:

<h4><a name="139-01">test</a></h4>

Как видно выше, тег привязки был изменен с самозакрывающийся тег к тегу, который по какой-то причине содержит текст «тест». Кто-нибудь знает, почему это происходит?

Если я установлю строку:

<% test = '<h4><a name="139-01"></a>test</h4>' %>

Она работает как положено:

<h4><a name="139-01"></a>test</h4>

Проблема в том, что я надеваю У вас нет доступа для изменения тега в реальных данных.

1 Ответ

3 голосов
/ 09 марта 2020

Это не Ruby на Rails, изменяющий HTML.

Самозакрывающаяся гиперссылка просто недействительна HTML. И именно браузер изо всех сил пытается разобрать и понять этот неверный HTML, и браузер добавляет закрывающий тег </a> туда, где, по его мнению, это имеет смысл.

Актуален в этом контексте:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...