我有一个简单的RSS馈送的网站,我试图建立。我想为帖子做一个阅读更多的链接,并将输出限制为300个字符。我的代码如下所示:
<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。有什么想法吗?谢谢
发布于 2018-08-16 05:40:15
truncate自动将输出标记为html_safe,并在默认情况下对内容进行转义。这意味着您的链接可能在您自己将其标记为html_safe之前就已被转义。
您可以向truncate传递一个escape: false选项,以便让它跳过默认情况下的转义。
例如。
<%= truncate(p.entry, length: 300, escape: false) %>结果被标记为HTML-safe,但默认情况下会进行转义,除非:escape为false。如果文本包含HTML标记或实体,则应小心,因为截断可能会产生无效的HTML (例如不平衡或不完整的标记)。
https://stackoverflow.com/questions/51866546
复制相似问题