在日历中显示数据库记录链接的问题排查
解决日历视图无法显示已存在记录的问题
看起来你已经在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
相关产品推荐
相关产品推荐

