不知道如何标题这个问题,但在这里。
我有两张桌子,Hotdesks和预订。用户可以预订hotdesk。
在我的控制器中,我有一个@eastdesks数组,其中包含位于“East”位置的所有办公桌。
我想要做的是检查哪些办公桌已被预订并显示可用办公桌列表。这是我的控制者:
@eastdesk = Hotdesk.order("code ASC").where(:location => "East")
@booking = Booking.all
到目前为止,这是我的代码:
<% @eastdesk.each do |ed| %>
<% @booking.each do |b| %>
<% if b.date == Date.today && b.type == "Hot Desk" %>
<% if b.desk == ed.code %>
<%= ed.code %> (Booked)
<% end %>
<% end %>
<% end %>
<% end %>
此仅显示已预订的内容。
我很欣赏它非常难看,因为我一直在玩。这很令人困惑,但是t表与预订中的“桌面”栏和东区的“代码”列相关联。 (即通过办公桌553预订将链接到桌面,代码为553)希望这是有道理的。谢谢你的帮助
编辑----
目前@eastdesk阵列中有2个办公桌(E90和E23)。 E90服务台已经预订了今天,E23服务台根本没有预订。对于上面的代码,我得到以下输出:
E90 (Booked)
我想要展示的是尚未预订的办公桌。我的Hotdesk模型包括:
has_many :bookings
我在考虑将以下内容添加到我的预订模型中,但我不确定是否存在不同类型的预订,并且并非所有预订都属于热门办公桌。
belongs_to :hotdesks
答案 0 :(得分:1)
您可以在预订表中创建一个包含“桌面代码”的数组,并使用“include?”检查此数组是否包含@eastdeck的'desk'值的方法。
可能的解决方案:
@booking.map { |b| @booking_codes.push b.desk } // Creating a temporary array holding 'desk' from @booking
查看:
<% @eastdesk.each do |ed| %>
<% @booking.each do |b| %>
<% if b.date == Date.today && b.type == "Hot Desk" && @booking_codes.include? b.desk %>
<%= ed.code %> (Booked)
<% end %>
<% end %>
<% end %>
PS:这可能不是最好的解决方案,但它可能有所帮助:)