В моем приложении Rails у меня есть текстовое поле, в котором я хочу, чтобы люди могли использовать уценку. Драгоценный камень redcarpet отлично работает для целей рендеринга уценки, но добавляет его после охватывающего диапазона. Это портит мой дизайн; верхняя часть абзаца должна появиться между значком «воспроизведение» и значком «карандаш» (так же, как заголовок на этом рисунке):
Вот html.erb с вызовом markdown
. Как видите, он полностью заключен в тег <span>
:
<p class="user_desc">
<span class="glyphicon glyphicon-play"></span>
<span class="glyphicon glyphicon-pencil"></span>
<span id="user_title_text"><%= markdown(@user.description) %></span>
</p>
Вот как HTML отображается с помощью ERb и Redcarpet:
<p class="user_desc">
<span class="glyphicon glyphicon-play"></span>
<span class="glyphicon glyphicon-pencil"></span>
<span id="user_title_text"></span></p>
<p>
Hi! I started <a href="https://www.startthis.org" rel="nofollow"
target="_blank">StartThis.org</a>. My background is in philosophy (Ph.D.,
Ohio State, 2000). I like ideas and thinking them through. I also like
organizing things online, especially educational and reference projects.
</p>
(etc.)
Другими словами, метод markdown
называется (и я ожидал, что он будет интерполирован) span#user_title_text
, на самом деле он был добавлен после диапазона.
Каков наилучший способ исправить это? Искал похожие проблемы, но не нашел. Я думаю, я мог бы подготовить HTML в виде строки во вспомогательном методе и передать его отдельно в представление (возможно? Нет, я только что попробовал, и он имеет тот же эффект!), но какова наилучшая практика/решение для этого? Извините, если это очевидно, я нуб во всем этом.
Подумав еще немного, учитывая, что предварительная подготовка проанализированного уценки в контроллере имеет тот же эффект, может быть, проблема в том, как rails/ERb выполняет интерполяцию?
ТИА
ОБНОВЛЕНИЕ: обратите внимание на <p>
в приведенном выше коде. Это окружало диапазон, который окружал вызов уценки... который генерирует теги <p>
!
Также обратите внимание на
в приведенном выше коде. После исправления тегов <p>
(изменил их на <div>
s), благодаря совету Мэтта, я попытался удалить объекты html... и затем это было исправлено. Почему?!
ТИА снова.