我正在编写一个应用程序,我想根据它们在主索引页面上创建的日期列出博客帖子。所以,如果我今天创建了10篇博客文章,我希望在应用程序的索引页面上有这样的内容。
今天:
POST 1
POST 2
POST 3
......等等
但是,我有这个......
今天:
POST 1
今天:
POST 2
今天:
POST 3
......等等
以下是我的代码..
index.html.erb
<% @posts.reverse.each do |post| %>
<% flag = true %>
<% if post.date.day < Time.now.day &&
post.date.day >= (Time.now.day - 1.day) %>
<!-- This IF statement gets ignored -->
<% if flag == true %>
<%= "Today" %>
<% flag = false %>
<br />
<% end %>
<tr>
<td><p>IMAGINE THIS SENTENCE IS ONE POST</p></td>
</tr>
<% end %>
<% end %>
在代码中被忽略的if语句充当标志,因此它应该只对具有相同日期的每组帖子执行一次。但是,由于某些原因,Rails似乎完全忽略了它。如果有人可以帮我纠正这个问题或者把我推向正确的方向,那么你的帮助将会非常感激。
答案 0 :(得分:1)
不是if
被忽略,而是每个帖子上的标志再次被设置为true
。
第一次设置标志必须在迭代之外,如下所示:
<% flag = true %>
<% @posts.reverse.each do |post| %>
<% if post.date.day < Time.now.day &&
post.date.day >= (Time.now.day - 1.day) %>
<% if flag == true %>
<%= "Today" %>
<% flag = false %>
<br />
<% end %>
<tr>
<td><p>IMAGINE THIS SENTENCE IS ONE POST</p></td>
</tr>
<% end %>
<% end %>