我的网站上有一个管理页面,通常会列出我使用@ 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
答案 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
。