You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在日历中显示数据库记录链接的问题排查

解决日历视图无法显示已存在记录的问题

看起来你已经在CalendarController的show方法里获取了服务记录,但视图没渲染出来,咱们一步步排查问题:

1. 先确认实例变量有没有传到视图里

首先在你的show.html.erb视图开头加两行调试代码,看看数据到底有没有过来:

<%# 临时调试用,看完可以删掉 %>
<%= debug @service_records_by_date %>
<%= debug @date %>

然后访问触发show动作的路径(比如带日期参数的/calendar?date=2024-05-20,或者根据你的路由配置的路径)。如果页面上没显示任何ServiceRecord的内容,大概率是你访问的是index页面——因为你的index方法是空的,没有定义任何实例变量,得检查下路由是不是把你当前访问的路径指向了calendar#index而不是show。

2. 确保视图正确遍历记录

如果调试发现@service_records_by_date里有数据,那就是视图没正确渲染。你可以在视图里加一段遍历代码试试:

<div class="col-md-12 text-center">
  <h3><%= @date.strftime("%Y年%m月%d日") %> 的服务记录</h3>
  <% if @service_records_by_date.empty? %>
    <p>今天还没有服务记录哦</p>
  <% else %>
    <ul class="list-unstyled">
      <% @service_records_by_date.each do |record| %>
        <li class="mb-2">
          <%# 这里替换成你ServiceRecord模型里的实际字段,比如description、customer_name等 %>
          <%= record.description %> - <%= record.created_at.strftime("%H:%M") %>
        </li>
      <% end %>
    </ul>
  <% end %>
</div>

记得把record.description换成你模型里真实存在的属性,不然会报错。

3. 补全日期筛选逻辑(可选)

你的变量名是@service_records_by_date,但目前代码是取所有记录,没有按@date过滤。如果需要只展示指定日期的记录,修改show方法:

def show
  @date = params[:date] ? Date.parse(params[:date]) : Date.today
  # 假设ServiceRecord有created_at字段,筛选当天的记录
  @service_records_by_date = ServiceRecord.where(created_at: @date.beginning_of_day..@date.end_of_day)
end

如果你的记录是用start_date之类的字段存储日期,把created_at换成对应的字段就行。

4. 检查路由配置

最后确认下config/routes.rb里的路由是否正确,比如:

resources :calendar, only: [:index, :show]

这样GET /calendar/show或者带参数的GET /calendar?date=2024-05-20才能正确触发show方法。

先按这几步排查,应该能搞定记录不显示的问题~

内容的提问来源于stack exchange,提问作者sunkencity999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:10:49