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

Rails预约系统已预约与可预约座位颜色无法正确区分问题求助

需求说明

我们正在开发一套预约系统,需要在页面上直观展示座位的可预约状态。预约模型用于关联业务逻辑,已预约座位ID通过sheet_id字段管理,我们计划通过更改对应座位的颜色,方便用户识别座位是否可预约。

遇到的问题

我已经在View层编写了可用座位和不可用座位的颜色区分逻辑,但目前所有座位都显示为同一种颜色,我们希望预约表中无对应记录的座位显示为灰色。

示例图片

代码

View

<body>
  <div class="screen">
    <p>スクリーン</p>
  </div>
  <table>
    <!-- sheet为主数据 -->
    <% @sheets.each do |sheet|%>
      <%= link_to new_movie_schedule_reservation_path(movie_id: @movie_id, schedule_id: @schedule_id,date: @date,sheet_id: sheet.id) do %>
        <!-- 条件分支输出不同状态 -->
        <% if reservation_list(sheet.id) %>
          <div class="sheet">
            <p><%= sheet.row %><%= sheet.column %></p>
          </div>
        <% else %> 
          <div class="unavailable">
            <p><%= sheet.row %><%= sheet.column %></p>
          </div>
        <% end %>
      <% end %>
    <% end %>
  </table>
</body>

Helper

# 逻辑思路:传入座位ID,判断预约表中是否存在对应记录,走不同处理流程
def reservation_list(sheet)
    list = Reservation.where("sheet_id LIKE ?", "%#{sheet}%")
    if list.nil?  
      false
    else
      true
    end
end
end
已尝试的解决方案
  • 编写helper方法,通过传入的座位ID检索预约表,若存在对应记录则走不同逻辑
def reservation_list(sheet)
    list = Reservation.where("sheet_id LIKE ?", "%#{sheet}%")
    if list.nil?  
      false
    else
      true
    end
end
  • 在View层使用if条件分支区分输出内容
<% if reservation_list(sheet.id) %>
...
<% else %> 
...
<% end %> 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:06:05