如何垂直列出该月的日期

时间:2012-10-24 01:15:09

标签: ruby-on-rails

我有以下想象力。这基本上代表的是一种旋转。我想要做的是将其实现到我使用Ruby On Rails构建的系统中。但是我已经确定我要做的第一件事是垂直列出月份的日期。我对此有点困惑。水平标题代表不同的医院。反对日子,医院的名字显示谁在哪家医院工作。颜色编码现在不相关。

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

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

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

虽然我在考虑可能包含在循环内部会自动为我生成单元格以及日期

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

我的模型如下:

  • 部门
  • Hospital_booking
  • 医院
  • ROLE_USER
  • 作用
  • rota_day
  • 用户

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

这样它可以循环通过医院并生成标题但是我仍然会停留在生成日期

2 个答案:

答案 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%完整的解决方案,但它应该是您正确的格式化