我正在为我的应用程序添加日历功能,目前在获取我知道的记录存在问题时会出现问题。
这是我的控制器:
class CalendarController < ApplicationController
def index
end
def show
@date = params[:date] ? Date.parse(params[:date]) : Date.today
@service_records_by_date = ServiceRecord.all
end
end
这是我的观点:
<center><h1>Calendar</h1></center>
<div class="row">
<div class="col-md-12 text-center">
<div class="well controls">
<%= link_to calendar_path(date: @date - 1.month), class: "btn btn-default" do %>
<i class="glyphicon glyphicon-backward"></i>
<% end %>
<%= "#{@date.strftime("%B")} #{@date.year}" %>
<%= link_to calendar_path(date: @date + 1.month), class: "btn btn-default" do %>
<i class="glyphicon glyphicon-forward"></i>
<% end %>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<%= calendar @date do |date| %>
<%= date.day %>
<% @service_records_by_date.each do |record| %>
<% if record.created_at == date %>
<li><%= link_to(record.store_name, record) %></li>
<% end %>
<% end %>
</ul>
<% end %>
</div>
</div>
日历看起来很好,但是尽管数据库中存在很多记录,但没有记录。任何想法将不胜感激!
答案 0 :(得分:1)
在评论中与您聊天后,我们发现问题出现在您的条件中:
<% if record.created_at == date %>
<li><%= link_to(record.store_name, record) %></li>
record.created_at
可能是unix时间戳。
date
也可以是一个unix时间戳,但在这个例子中它是日期的字符串表示(出现问题的地方)
我认为即使它是一个unix时间戳而不是字符串,你仍然难以比较两者,因为除非它们完全相同,否则你将无法成功地比较两者。在比较之前,我会将它们转换为通用格式。
我认为ruby的日期对象可能对此有所帮助:
https://ruby-doc.org/stdlib-2.3.1/libdoc/date/rdoc/Date.html