首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我调用truncate()方法时,html_safe不工作

当我调用truncate()方法时,html_safe不工作
EN

Stack Overflow用户
提问于 2018-08-16 05:15:16
回答 1查看 500关注 0票数 1

我有一个简单的RSS馈送的网站,我试图建立。我想为帖子做一个阅读更多的链接,并将输出限制为300个字符。我的代码如下所示:

代码语言:javascript
复制
<p id="notice"><%= notice %></p>


<h1 class="reviews">What They're Saying About Us</h1>
<br />
<h1 class="post-title"><%= image_tag("icons8-rss-40.png") %>RSS Feed</h1>

  <% @home_blogs.each do |p| %>
    <div class="blog-posts">
      <h3><%= p.name %></h3> | <%= p.created_at.to_date %>
      <br />
      <p id="blog_post_content">
        <% if p.entry.length > 200 %>
          <%= truncate(p.entry, length: 300).html_safe %>
          <%= link_to "...read more", p %>
        <% else %>
          <%= p.entry.html_safe %>
      </p>
      <% end %>
      <br />
      <%= image_tag("if__hashtag_2559811.png")%>Tag Cloud
      <div class="tag-cloud">
      </div>
    </div>
  <% end %>

<span class="pagination"><%= will_paginate @home_blogs %></span>
<br>

不管出于什么原因,我创建帖子时都会包含html标签,即使我使用的是html_safe。有什么想法吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-16 05:40:15

truncate自动将输出标记为html_safe,并在默认情况下对内容进行转义。这意味着您的链接可能在您自己将其标记为html_safe之前就已被转义。

您可以向truncate传递一个escape: false选项,以便让它跳过默认情况下的转义。

例如。

代码语言:javascript
复制
<%= truncate(p.entry, length: 300, escape: false) %>

docs for truncate

结果被标记为HTML-safe,但默认情况下会进行转义,除非:escape为false。如果文本包含HTML标记或实体,则应小心,因为截断可能会产生无效的HTML (例如不平衡或不完整的标记)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51866546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档