Как сделать текст жирным шрифтом в рубиновом файле helper.rb внутри строки

у меня есть один файл почтовой программы с именем schedule_mailer.html.erb в том, что я пытаюсь использовать вспомогательный метод, из которого я отображаю содержимое

в scheudle_mailer.html.erb

<p style='font-size:15px;margin:0 25px 20px 25px' >
  <%= body_text_tag() %>
</p>

в helper.rb мне нужно отправить строку, которая включает <b>, а также <br> но получаю по почте как <b> и сам тег <br>.

мой вспомогательный метод

def body_text_tag()
      body = "This email to inform you that"
        if @creation 
          body +  "your hotel schedule has been created <br>
          <b>timings :</b>  #{@timings}, <br>
          <b>Room number :</b> #{@room number},<br>
          ....
          ....
          ....
        elsif ....
       .....
end.

поскольку я пробовал tag(:br) внутри строки, даже несмотря на то, что он отображает почту с самим тегом(:br) вместо строки разрыва. как приблизить такого рода теги в строке к HTML?

Почему бы вам просто не использовать ERB напрямую в этом случае или частично для каждого случая? Зачем вызывать помощника из ERB и создавать HTML с конкатенацией строк?

spickermann 08.02.2023 18:14

@spickermann, поскольку один и тот же контент использовался в нескольких шаблонах электронной почты с одинаковыми переменными экземпляра, поэтому я пытаюсь реализовать с помощью помощника

jansha 08.02.2023 19:00

Как говорит @spickermann, вы должны вместо этого писать частичные фрагменты в ERB.

max 09.02.2023 11:08
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
3
52
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Причина, по которой это не работает, заключается в том, что в Rails, когда вы добавляете обычную строку в безопасный буфер, она автоматически экранируется для предотвращения XSS-атак.

irb(main):076:0> "<b>Hello".html_safe + "World</b>"
=> "<b>HelloWorld&lt;/b&gt;"

Если вы хотите создать текст, содержащий HTML-теги из помощника, вам нужно пометить части, которые являются HTML-тегами, как безопасные:

"<b>".html_safe + @timings + "</b>".html_safe

Не делай:

"<b>#{ @timings }</b>".html_safe 

Если вы на самом деле не знаете, что контент на самом деле безопасен и не содержит пользовательского ввода.

Вот что помощники тегов делают для вас автоматически:

content_tag(:b, @timings)
tag.b(@timings) 

Но этот код, скорее всего, вообще не принадлежит хелперу. Используйте представление или частичное и напишите его в ERB.

одно из решений, которое я попробовал и сработало для меня, - это использовать html_safe в почтовой программе. как <%= body_text_tag().html_safe %>

Это мой друг, как вы получаете атаку XSS. Вы действительно знаете, что вся строка безопасна? Я предполагаю, что нет. makandracards.com/makandra/2579-how-to-use-html_safe-correct‌​ly

max 08.02.2023 19:09

Другие вопросы по теме