14

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

必须有某种方法可以在弹出框内设置部分样式?还是我做错了?

请提前告诉我谢谢。

4

3 回答 3

3

我相信你必须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' %>" >

于 2018-06-09T21:07:54.510 回答
0

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

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

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

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

于 2018-06-10T08:01:40.130 回答
0

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

如果你想了解更多关于可以通过哪些选项传递给引导弹出窗口的信息,请查看他们的 API 的这一部分,你可以查看你可以用它做什么。

于 2018-06-09T21:31:17.440 回答