我创建了一个循环来显示所有博客帖子。我收到一个错误,在循环后显示随机文本:
看起来有一堆文本在循环结束时列出了所有帖子信息,我不知道它是如何发生的以及如何解决它。
我检查了我的HTML和CSS,但无法弄清楚导致问题的原因。
以下是HTML和CSS代码:
<section id="posts" class="wrapper">
<h2>My Latest Articles</h2>
<hr>
<div class="post_container">
<%= @posts.each do |p| %>
<div class="article">
<h3 class="post_title"><%= link_to p.title, p %></h3>
<p class="post_date"><%= p.created_at.strftime("%A,%b %d") %></p>
<p class="content"><%= truncate(p.content, length: 400) %></p>
</div>
<% end %>
</div>
<div class="button_wrapper">
<a href="blog.html" class = "button">More Articles</a>
</div>
</section>
CSS
#posts {
padding: 6.5em 0 10em 0;
h2 {
text-align: center;
color: $text;
margin-bottom: 1.25rem;
}
.post_container {
padding: 6em 0 6em 0;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: flex-start;
.article {
max-width: 28%;
}
.post_title {
color: $text;
font-size: 1.6em;
}
.post_date {
padding: .75rem 0;
color: $accent;
font-size: 1.2em;
}
.content {
color: $grey;
}
}
}
答案 0 :(得分:3)
<%= @posts.each do |p| %>
应该是
<% @posts.each do |p| %>
不输出.each
的结果。
答案 1 :(得分:2)
这是因为你在循环开始时使用<%=
。您可以使用<%
代替
将post_container
div更改为:
<div class="post_container">
<% @posts.each do |p| %>
<div class="article">
<h3 class="post_title"><%= link_to p.title, p %></h3>
<p class="post_date"><%= p.created_at.strftime("%A,%b %d") %></p>
<p class="content"><%= truncate(p.content, length: 400) %></p>
</div>
<% end %>
</div>
答案 2 :(得分:1)
使用
<% @posts.each do |p| %>
因为&lt; =%&gt;用于打印您的情况下的值,它将打印整个循环