我有以下想象力。这基本上代表的是一种旋转。我想要做的是将其实现到我使用Ruby On Rails构建的系统中。但是我已经确定我要做的第一件事是垂直列出月份的日期。我对此有点困惑。水平标题代表不同的医院。反对日子,医院的名字显示谁在哪家医院工作。颜色编码现在不相关。
水平标题是医院。这些是10家医院的固定价值。我发现困难的是生成当前的一天,在我的图像中使用当天作为第16天并且上升到5月12日。
我试图提出一些伪代码,但我不太确定我是否正朝着正确的方向前进
(Date.today..23.days.from_now).each do |d|; td= d.to_s(:short);
虽然我在考虑可能包含在循环内部会自动为我生成单元格以及日期
是否有可能的解决方案来实现我想要做的事情。
我的模型如下:
我想到的另一件事是,因为我知道有一个固定的医院价值是10.我在想,也许我可以按照以下方式做点什么:
<table class="rota">
<thead>
<th> Dates </th>
<th> Hospital </th>
<% end %>
</thead>
<% @Hospital.each do |Hospital| %>
<tr class="rota_days" id="rota_days<%= hospital_id %>">
这样它可以循环通过医院并生成标题但是我仍然会停留在生成日期
答案 0 :(得分:2)
我认为你走在正确的轨道上,但我不确定你在哪里遇到问题。
要解决此问题,我会传递视图@hospitals
和@days
,该视图对应于您要列出的医院以及您希望列出的日期。 get_hospital_booking_for_day
将是您制作的视图助手,可以返回值班人员的姓名或nbsp;
,以便正确显示空白单元格。
同样,我不确定这对你是否100%正确,但希望它会让你走上正轨:
<table class="rota">
<thead>
<% @hospitals.each do |hosp| %>
<th><%= hosp.name %></th>
<% end %>
</thead>
<tbody>
<% @days.each do |day| %>
<tr>
<td><%= day.to_s(:short) %></td>
<% @hospitals.each do |hosp| %>
<td><%= get_hospital_booking_for_day(hosp, day) %></td>
<% end %>
</tr>
<% end %>
</tbody>
</table>
答案 1 :(得分:0)
垂直列出月份是视图创建的错觉。最简单的方法是使用像
这样的数据字段月,1,3,约翰
并将其放在json对象内部。 ( 注意 :在JS中有其他方法吗?继续 - 无论如何都会讨论格式化问题)。我打算用一个数组。
var outputs = [];
for (i = 0; i < amountOfOutputs; i++) {
outputs[i] = { month: "",
datafield1: "",
datafield2: "",
datafield3: "" }
}
然后我会将对象附加到你的表中(如果你必须使用表格......)。你的问题的答案在这里公开。
for (i = 0; i < outputs.length; i++ ) {
var $row = $('<tr class="'+i+'">').
var $month = $('<td>').text(outputs[i].month);
var $df1 = $('<td>').text(outputs[i].datafield1);
var $df2 = $('<td>').text(outputs[i].datafield2);
var $df3 = $('<td>').text(outputs[i].datafield3);
$row.appendTo('table');
$month.appendTo('tr.'+i+'');
$df1.appendTo('tr.'+i+'');
$df2.appendTo('tr.'+i+'');
$df3.appendTo('tr.'+i+'');
}
你应该让你的桌子垂直显示月份。
我希望这会有所帮助,如果我不接近解决方案,请告诉我,我会再试一次。它不是100%完整的解决方案,但它应该是您正确的格式化。