Рендеринг частичного в загрузчике поповер рельсы 5 приложение? - PullRequest
0 голосов
/ 06 июня 2018

У меня проблема с рендерингом партиала в загрузочном поповере в моем приложении 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 %>" - текстпоявляется в виде простого текста

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

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

Ответы [ 3 ]

0 голосов
/ 10 июня 2018

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

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

0 голосов
/ 10 июня 2018

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

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

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

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

0 голосов
/ 10 июня 2018

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

Так будет написано:

<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' %>" >

...