在 bootstrap 弹出窗口 rails 5 应用程序中呈现部分内容?

Rendering partial in bootstrap popover rails 5 app?

我在 rails 应用程序的 bootstrap 弹出窗口中呈现部分内容时遇到问题。

部分始终呈现为纯文本(显示所有 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
});

这是 envs 文件夹中的 _e1.html.erb 部分

<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>

我在 raw()html_safe 中都包裹了 "<%= render :partial => 'envs/e1' %>" 这一行,但没有任何运气。

* 添加示例 * 下面是我如何在 snipped

中使用 html_saferaw 的示例

data-content= raw("<%= render :partial => 'envs/e1' %>") - 文本以 "right" 的方式出现,但在弹出框之外。

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 %>" - 文本显示为纯文本

一定有什么方法可以在弹出框内设置局部样式?? 还是我做错了?

请多多指教 提前致谢。

我认为您必须在弹出窗口范围内启用 data-html = "true"。 至少它在我的机器上有效。

所以应该这样写:

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

默认情况下,Bootstrap弹出框不接受html输入,自动继承选项:data-html="false"需要添加修改为true .

如果您想详细了解可以传递给 bootstrap 弹出窗口的选项,请查看 this section of their API 并查看您可以用它做什么。

您的 Bootstrap 标记和 JS 看起来不错,所以问题几乎可以肯定是您的视图正在输出转义 HTML 而不是您需要的标记。

您对 html_safe 的尝试非常接近并且肯定是在正确的轨道上,但是缺少括号意味着它并没有完全按照您的想法进行。试试这个:

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

请注意,html_safe 应用于 render 的输出,并且外部引号保留在 HTML 中并且不被 Rails 解释。