在当前日期之前/之后列出带有日期属性的文章

时间:2019-03-21 21:20:36

标签: html ruby ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2

我的网站上有一个管理页面,通常会列出我使用@ appointments.each时用户已安排的所有约会。我试图弄清楚如何在当前日期之后列出所有带有date属性的约会,以及如何列出当前日期之前带有日期的所有约会。我看过一堆stackoverflow示例,但是无论何时更改查询,都不再显示任何约会(就像下面的约会一样)。 这是我的管理页面:

<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>

在架构文件中放置我的约会表,例如date属性将其存储为“ 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

1 个答案:

答案 0 :(得分:0)

查询后,您似乎缺少了.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