我是ruby on rails的新手,我正在创建我的第一个ruby on rails项目。我创建了一个带有嵌入式红宝石代码的html视图,它将显示一个包含以下标题的表格:Patient,Room / Bed,Covering OT / PT。在这些标题下,将显示患者姓名,相应的房间/床和OT / PT。但是当代码运行时,它不会呈现患者姓名,房间/床和覆盖OT / PT。表格标题显示但不是患者姓名,房间/床和覆盖OT / PT。此ruby块中的任何代码<%@ units.each do | un | %GT; ...<%end%>即使我输入像<%= Mr. Jones%>这样的红宝石代码,显然也没有执行。我不知道该怎么做。非常感谢任何帮助和建议。这是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>
以下是显示DashboardsController中的@unit变量的代码:
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 :(得分:1)
如果un.patients返回空,tbody块内的代码将不会执行?或者没有 这就是为什么你放在那个区块内的任何东西都会显示
如果在该块中放置一个简单的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
您可以使用控制台与模型进行交互,以查询数据和模型结构
e.g。
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%>
您可能希望整理代码缩进以使其更具可读性