Rails一直忽略视图中的IF语句

时间:2015-06-17 15:31:46

标签: ruby-on-rails ruby if-statement flags

我正在编写一个应用程序,我想根据它们在主索引页面上创建的日期列出博客帖子。所以,如果我今天创建了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似乎完全忽略了它。如果有人可以帮我纠正这个问题或者把我推向正确的方向,那么你的帮助将会非常感激。

1 个答案:

答案 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 %>