列出日期属性为 before/after 当前日期的文章

Listing Articles with date attribute before/after the current date

我的网站上有一个管理页面,通常会列出用户在我使用@appointments.each 时安排的所有约会。我试图弄清楚如何在当前日期之后列出所有具有日期属性的约会,以及如何列出日期在当前日期之前的所有约会。我查看了一堆 Whosebug 示例,但每当我更改查询时,none 的约会就会再次出现(就像下面的那个)。 这是我的管理页面:

<div align="center">
    <div class="col-md-6">
      <div class="card">
        <h5 class="card-header">All Currently Scheduled Appointments</h5>
        <div class="card-body">
          <%@appointments.where("date >= ?", Date.current) do | appt |%>
            <%="Appointment for #{appt.owner_email} on #{appt.date} in the #{appt.time}"%> <%= link_to 'Edit', edit_appointment_path(appt) %>
            </br>
          <%end%>
        </div>
      </div>
    </div>
  </div>

这是我在架构文件中的约会 table,例如,日期属性将它们存储为“2019-03-21”。

  create_table "appointments", force: :cascade do |t|
    t.string "VIN"
    t.string "owner_email"
    t.string "date"
    t.string "time"
    t.string "reason"
    t.string "parts_needed"
    t.string "hours_needed"
    t.string "cost"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

您的查询后似乎缺少 .each

<% @appointments.where("date >= ?", Date.current).each do | appt | %>
  <%= "Appointment for #{appt.owner_email} on #{appt.date} in the #{appt.time}"%> <%= link_to 'Edit', edit_appointment_path(appt) %>
  </br>
<% end %>

此外,这有点超出您的问题范围,但最好将查询逻辑放在控制器中。所以,在你的控制器动作中你应该做这样的事情:

@appointments = Appointment.where("date >= ?", Date.current)

在您看来,您只是迭代 @appointments