2016-06-17 19 views
1

Ich bin neu in Ruby on Rails und ich erstelle meine erste Ruby on Rails-Projekt. Ich habe eine HTML-Ansicht mit eingebetteten Ruby-Codes erstellt, die eine Tabelle mit den folgenden Überschriften anzeigen: Patient, Zimmer/Bett, Abdeckung OT/PT. Unter diesen Überschriften werden der Patientenname, das entsprechende Zimmer/Bett und OT/PT angezeigt. Wenn die Codes jedoch ausgeführt werden, werden der Patientenname, das Zimmer/Bett und die Abdeckung von OT/PT nicht angezeigt. Die Tabellenüberschriften geben jedoch nicht den Namen des Patienten, das Zimmer/Bett und die Abdeckung von OT/PT wieder. Alle Codes in diesem Ruby Block <% @ units.each do | un | %> ... <% end%> scheinbar nicht ausgeführt werden, auch wenn ich einen Ruby-Code wie <% = Mr. Jones%>. Ich bin mir nicht sicher, was ich tun soll. Jede Hilfe und Beratung wird sehr geschätzt. Hier ist der HTML-Code:HTML-Tabelle nicht bevölkern/Rendering

<!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> 

Hier ist die Codes der @unit Variable innerhalb der DashboardsController zeigt:

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

Was enthält '@units'? Veröffentlichen Sie den Code, der diese Variable setzt (in Ihrem Controller), und legen Sie auch <% = @ units.inspect%> ab, wenn die Ansicht die Seite neu lädt und die Ergebnisse veröffentlicht. – RichardAE

+0

Können Sie auch den Namen der Ansichtsdatei bestätigen, die wie xxxx.html.erb – Maxence

+0

aussieht, wie @jamesw unten andeutet, können Sie bestätigen, dass Ihre Unit-Tabelle mit Datensätzen gefüllt ist? – Maxence

Antwort

1

Der Code innerhalb des tbody Block wird nicht ausgeführt, wenn un.patients leer zurückkehrt? oder null Dies ist der Grund, warum nichts, was Sie in diesem Block platzieren wird

angezeigt Wenn Sie eine einfache HTML-Tag in diesem Block platzieren wird es nicht angezeigt z.

<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> 

Dies liegt daran, dass in un.patients keine Daten vorhanden sind. Nun, warum gibt es keine Daten ist eine ganz andere Frage. Überprüfen Sie Ihre Zuordnung in der Konsole über die Befehlszeile im Stammordner Ihrer Anwendung.

$ rails c

Sie die Konsole mit Ihren Modellen verwenden können, um interagieren Ihre Daten und Modellstrukturen zu verhören

z.B.

Patient.first.unit 

Sie, dass die oben gibt nil zurück finden können, wenn Sie ein Gerät erwarten zurückzukehren

Ich schlage vor, Sie bei Ihrer persönlichen Daten sehr genau hinsehen und insbesondere die Beziehungen zwischen Gerät und Patient und Sie werden wahrscheinlich feststellen, dass es nichts falsch mit Ihrem Formular

Sie auch ein Häkchen in das hTML-Formular für diese Bedingung könnte hinzufügen

<% 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%> 

Sie ist vielleicht wollen den Codeeinzug aussortieren, um ihn lesbarer zu machen