2016-06-17 2 views
1

Я новичок в рубине на рельсах, и я создаю свой первый проект Ruby on rails. Я создал html-представление со встроенными рубиновыми кодами, в котором будет отображаться таблица со следующими заголовками: «Пациент, комната/кровать», «Covering OT/PT». Под этими заголовками будет отображаться имя пациента, соответствующая комната/кровать и OT/PT. Но когда коды работают, это не отображает имя пациента, комнату/кровать и покрытие OT/PT. Заголовки таблицы отображают, но не имя пациента, номер/кровать и покрытие OT/PT. Любые коды в этом рубиновом блоке <% @ units.each do | un | %> ... <% end%>, по-видимому, не выполняются, даже если я поместил код ruby, например <% = Mr. Jones%>. Я не уверен что делать. Любая помощь и советы очень приветствуются. Вот HTML-код:Таблица Html, не заполняющая/рендеринга

<!DOCTYPE html> 
    <html> 
    <head> 
     <meta charset="utf-8"> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
     <title>Project</title> 
     <meta name="description" content="Project1"> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
     <!-- <link rel="shortcut icon" href="/favicon.ico"> --> 
     <meta name="author" content="David West"> 
     <link rel="icon" type="img/ico" href="/assets/images/jhu_tic.ico"> 
     <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400"> 
     <link rel="stylesheet" href="/css/enterprise-auth.min.css"> 

    <div class="bar-header"> 
    <div class=label> 
     <div class=app-label>Project | </div> 
     <div class=view-label>Therapist</div> 
    </div> 
    <div class="date">Today is <%= Time.now.to_date %></div> 
    </div> 
</div> 
<div class="main-page"> 
<% @units.each do |un| %> 


    <div class="patient-queue-wrapper"> 
     <div class="queue-header">Daily Tx and other patients with OT/PT lag 2+ days</div> 
     <table class="mdl-data-table mdl-js-data-table mdl-shadow--2dp fixed-table-header"> 
     <thead> 
      <tr> 
      <th class="mdl-data-table__cell--non-numeric">Patient Name</th> 
      <th class="mdl-data-table__cell--non-numeric">Room/Bed</th> 
      <th>OT/PT Lag</th> 
      <th>OT/PT AMPAC</th> 
      <th class="mdl-data-table__cell--non-numeric">Covering OT/PT</th> 
      </tr> 
     </thead> 
     <tbody class="table-body scrollable-body"> 
      <% un.patients.each do |patient| %> 

      <% if patient.lag_time_approaching_thresh %> 

       <tr> 
       <td class="mdl-data-table__cell--non-numeric"><%= patient.name %></td> 
       <td class="mdl-data-table__cell--non-numeric"><%= patient.room_bed %></td> 

       </tr> 
      <% end %> 
      <% end %> 
     </tbody> 
     </table> 
    </div> 
    <%end%> 
    </div> 
    </head> 
</html> 

Вот коды, показывающий переменную @unit внутри DashboardsController:

class DashboardsController < ApplicationController 
     def therapist 
     @patients = Patient.all.includes(:pt_priority, :ot_priority, orders: [visi$] 
     @units = Unit.all 
    end 

    def therapist_all_units 
     @units = Unit.all 
    end 

    def therapist_unit 
     @unit = Unit.find(params[:id]) 
     # use the link-to helper methods 
    end 

    def manager 
    end 
+0

Что содержит «@units»? Отправьте код, который устанавливает эту переменную (в вашем контроллере), а также поместите <% = @ units.inspect%>, если представление, перезагрузите страницу и опубликуйте результаты. – RichardAE

+0

Можете ли вы также подтвердить имя файла вида, который выглядит как xxxx.html.erb – Maxence

+0

, как предлагает @jamesw ниже, можете ли вы подтвердить, что таблица вашего устройства заполнена записями? – Maxence

ответ

1

Код внутри блока TBODY не будет выполняться, если un.patients возвращает пустой? или nil В этом случае ничего не будет размещено внутри этого блока.

Если вы разместите простой тег html внутри этого блока, он не появится, например.

<tbody class="table-body scrollable-body"> 
    <% un.patients.each do |patient| %> 
    <h1> If un.patients is then nothing in here will display </h1> 
    <% if patient.lag_time_approaching_thresh %> 

     <tr> 
     <td class="mdl-data-table__cell--non-numeric"><%= patient.name %></td> 
     <td class="mdl-data-table__cell--non-numeric"><%= patient.room_bed %></td> 

     </tr> 
    <% end %> 
    <% end %> 
</tbody> 

Это потому, что нет данных в un.patients. Теперь, почему нет данных, это совершенно другой вопрос. Проверьте свою связь в консоли, запущенной из командной строки внутри корневой папки вашего приложения.

$ rails c

Вы можете использовать консоль, чтобы взаимодействовать с вашими моделями опрашивать ваши данные и ваши модели структуры

например

Patient.first.unit 

вы можете обнаружить, что выше возвращает NIL, когда вы ожидаете блок для возврата

Я предлагаю вам очень внимательно посмотреть на ваши данные и, в частности, отношения между блоком и пациентом и вы, вероятно, найти что нет ничего плохого в вашей форме

Вы также можете добавить проверку в форму HTML для этого условия

<% if un.patients.empty? %> 
    <h2> Sorry, there are no patients for this unit </h2> 
<%else%> 
<tbody class="table-body scrollable-body"> 
    <% un.patients.each do |patient| %> 
    <% if patient.lag_time_approaching_thresh %> 

     <tr> 
     <td class="mdl-data-table__cell--non-numeric"><%= patient.name %></td> 
     <td class="mdl-data-table__cell--non-numeric"><%= patient.room_bed %></td> 

     </tr> 
    <% end %> 
    <% end %> 
</tbody> 
<%end%> 

Вы можете для определения кода вдавливания, чтобы сделать его более читаемым