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
相关产品推荐
相关产品推荐

