Оказание частичного в bootstrap popover rails 5 приложений?

У меня проблема с частичным в загрузке в моем приложении rails.

Частично всегда отображается как обычный текст (показывающий все теги HTML и т.д.).

это код из index.html.erb

<span class="has-popover"
      style="cursor:pointer;"
      data-toggle="popover"
      data-trigger="hover"
      data-container="body"
      data-placement="right"
      title="Lorem Ipsum"
      data-content= "<%= render :partial => 'envs/e1' %>" >
      <i class="fa fa-question-circle "  aria-hidden="true"></i>
</span>

В app.js меня есть этот фрагмент

$(".has-popover").popover({
    html : true
});

и это _e1.html.erb в папке envs

<h2>Mauris euismod sollicitudin?</h2>

<p>Morbi sit amet tellus pellentesque, maximus eros a, aliquam nunc. Vivamus velit velit, vestibulum at eros eu, iaculis hendrerit tortor. Morbi ullamcorper purus at ornare ullamcorper. </p>

<br>

<p>Morbi sit amet tellus pellentesque, maximus eros a, aliquam nunc. Vivamus velit velit, vestibulum at eros eu, iaculis hendrerit tortor. Morbi ullamcorper purus at ornare ullamcorper. </p>

Я обернул "<%= render :partial => 'envs/e1' %>" эту строку как в raw() и в html_safe без везения.

* ДОБАВЛЕННЫЕ ПРИМЕРЫ * ниже приведены примеры того, как я использовал html_safe и raw в отрезанных

data-content= raw("<%= render :partial => 'envs/e1' %>") - текст появляется как "правильный", но вне сайта.

data-content= "<%= raw(render :partial => 'envs/e1') %>" > - текст отображается как обычный текст

data-content= "<%= render :partial => raw('envs/e1') %>" > - текст отображается как обычный текст

data-content= "<%= render :partial => 'envs/e1' %>".html_safe - текст отображается как обычный текст

data-content= "<%= render :partial => 'envs/e1'.html_safe %>" - текст отображается как обычный текст

должен быть какой-то способ иметь частичный стиль внутри popover? Или я делаю все это неправильно?

пожалуйста, сообщите мне заранее.

Ответы

Ответ 1

Я считаю, что вам нужно включить data-html = "true" в ваш popover span. По крайней мере, это работало на моей машине.

Так что это было бы написано так:

<span class="has-popover"
  style="cursor:pointer;"
  data-toggle="popover"
  data-trigger="hover"
  data-html="true" <!-- This is what you have to add to the code -->
  data-container="body"
  data-placement="right"
  title="Lorem Ipsum"
  data-content= "<%= render :partial => 'envs/e1' %>" >

Ответ 2

По умолчанию всплывающие окна Bootstrap не принимают html, введенный в них, автоматически наследуя параметр: data-html="false" который нужно добавить и изменить на true.

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

Ответ 3

Ваша разметка Bootstrap и JS выглядят прекрасно, поэтому проблема почти наверняка заключается в том, что ваше представление выводит экранированный HTML, а не разметку, которая вам нужна.

Ваши попытки с html_safe очень близки и определенно на правильном пути, но отсутствие скобок означает, что это не совсем то, что вы думаете. Попробуйте это вместо этого:

data-content="<%= render(partial: 'envs/e1').html_safe %>"

Обратите внимание, что html_safe применяется к выходу render, а внешние кавычки сохраняются в HTML и не интерпретируются Rails.