在我的日历中显示来自DB的记录的链接

时间:2018-04-19 19:37:51

标签: ruby-on-rails ruby database view iteration

我正在为我的应用程序添加日历功能,目前在获取我知道的记录存在问题时会出现问题。

这是我的控制器:

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>

日历看起来很好,但是尽管数据库中存在很多记录,但没有记录。任何想法将不胜感激!

1 个答案:

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