Создание таблицы на основе столбцов в представлении ruby ​​on rails - PullRequest
4 голосов
/ 30 июня 2010

Мне нужна небольшая помощь в динамическом создании таблицы на основе столбцов вместо таблицы на основе строк.

Скажем, у меня есть больница, а в больнице много пациентов.

Больница № 1

          | Day 1 | Day 2 | Day 3     
Patient 1 | 36.6  | 36.4  | 36.5      
Patient 2 | 37.0  | 37.1  | 36.6      
Patient 3 | 37.1  | 36.4  | 36.7      
Patient 4 | 36.6  | 36.6  | 36.6      
Patient 5 | 36.7  | 37.1  | 36.4  

Каждый день каждый пациент проверяет температуру своего тела. Я хотел бы получить совет / пример или помощь в динамическом построении такой таблицы - добавление новых данных вертикально, а не горизонтально. Надеюсь, вы понимаете, о чем я.

Заранее спасибо:)

Ответы [ 2 ]

5 голосов
/ 30 июня 2010

Я предполагаю, что вы имели в виду что-то вроде этого:

у вас есть три модели:

class Hostpital < ActiveRecord::Base
  has_many :patients
  has_many :temp_readings, :through => :patients
end

class Patient < ActiveRecord::Base
  belongs_to :hospital
  has_many :temp_readings
end

class TempReading < ActiveRecord::Base
  belongs_to :patient
end

Чем вы можете построить таблицу в виде erb следующим образом:

<table>
  <thead>
    <tr>
      <th>&nbsp;</th>
      <%- some_hospital.temp_readings.map(&:date_of_reading).sort do |date_of_reading| -%>
        <th><%= date_of_reading %></th>
      <%- end -%>
    </tr>
  </thead>
  <tbody>
    <%- some_hospital.patients.each do |patient| -%>
      <tr>
        <th><%= patient.name %></th>
        <%- patient.hospital.temp_readings.map(&:date_of_reading).sort do |date_of_reading| -%>
          <td><%= patient.temp_reading.find_by_date_of_reading(date_of_reading) %></td>
        <%- end -%>
      </tr>
    <%- end -%>
  </tbody>
</table>

Я предполагаю, что у вас есть какая-то колонка с датой в вашей модели чтения, я просто назвал ее date_of_reading

0 голосов
/ 30 июня 2010

Если ваш вопрос касается хранения и представления данных в вашем приложении, то вы можете сделать это с помощью 2 моделей следующим образом:

class Patient < ActiveRecord::Base
  has_many :temp_readings
end

class TempReading < ActiveRecord::Base
  belongs_to :patient
end

При создании нового показания для каждого пациента вы добавляете строку в таблицу temp_readings. При отображении этих показаний (скажем, за последние 7 дней) вы печатаете последние 7 строк значений temp_readings для каждого пациента в одной строке, давая вам столбчатый вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...