0

我有以下图像。这基本上代表的是一个轮换。我想要做的是将它实现到我正在使用 Ruby On Rails 构建的系统中。但是我已经确定我要做的第一件事是垂直列出月份的日期。我有点困惑。横向的标题代表不同的医院。与日期和医院相对的名称显示了谁在哪家医院工作。颜色编码现在不相关。

水平标题是医院。这些是10家医院的固定值。我发现困难的是生成当天,在我的图像中使用当天作为 16 日并一直到 5 月 12 日。

我试图想出一些伪代码,但不太确定我是否朝着正确的方向前进

(Date.today..23.days.from_now).each do |d|; td= d.to_s(:short);

尽管我在想也许将循环封装在内部会自动为我生成单元格以及日期

是否有可能的解决方案来实现我想要做的事情。

我的模型如下:

  • 部门
  • Hospital_booking
  • 医院
  • 角色用户
  • 角色
  • 轮播日
  • 用户

想到的另一件事是,因为我知道医院的固定值是 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 %>">

这样它可以遍历医院并生成标题但是我仍然会被困在生成日期

4

2 回答 2

2

我认为您在正确的轨道上,但不能 100% 确定您在哪里遇到问题。

为了解决这个问题,我将传递视图@hospitals以及@days哪些对应于您要列出的医院以及您要列出的日期。这get_hospital_booking_for_day将是您创建的视图助手,它返回值班人员的姓名或 anbsp;以便空白单元格正确显示。

同样,我不确定这对您来说是否 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>
于 2012-10-24T01:50:12.953 回答
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% 完整的解决方案,但它应该是你在格式化的正确轨道上。

于 2012-10-24T02:31:14.867 回答