[英]Rails 3: Ruby variables in view are in NilClass
Please pardon the newbie question, but I'm stumped. 请原谅新手问题,但我很困惑。 I'm a teacher converting a Rails
我是一位转换Rails的老师
1 app to Rails 3. My "verify" controller is getting correct values from my database, 1个应用程序连接到Rails3。我的“验证”控制器正在从数据库中获取正确的值,
but when the view attempts to access the variables I'm told they are in "nilClass". 但是当视图试图访问变量时,我被告知它们在“ nilClass”中。
Here's my controller: 这是我的控制器:
file ROOT/app/controllers/verify_controller.rb: 文件ROOT / app / controllers / verify_controller.rb:
class VerifyController < ApplicationController
@student = Assignment.get_student
@assignments = Assignment.get_assignments
logger.info("VERIFY: @student is #{@student}")
logger.info("VERIFY: @assignments is #{@assignments}")
end
Here is my view: 这是我的看法:
file ROOT/app/views/verify/list.html.erb: 文件ROOT / app / views / verify / list.html.erb:
<?xml version="1.0" encoding="UTF-8" ?>
<!--
This is our listing view.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Student assignments</title>
</head>
<body>
<div id="assignment-list">
<!-- @student is a Ruby variable. The @ means it is a "member"
which is accessible beyond the code that calculates it. (The
class is the VerifyController class, which we will be seeing
shortly.) See below for the angle brackets!
-->
<h2>Assignments for <%= @student %></h2>
<table cellspacing="5" cellpadding="5" border="2">
<tr>
<th>Student</th>
<th>Description</th>
<th>Date received</th>
</tr>
<!-- HTML alone doesn't know how many rows are in the table, so
Ruby has to look at the variables and provide a loop to do
the rows .
-->
<!-- < % and % > delimit Ruby code in HTML so long as the Ruby
doesn't produce a value (there is no blank space between
the angle brackets and the % signs; I had to put one in
to prevent Ruby from trying to interpret this comment!)
If the expression does produce a value, < % = and % > are the
delimiters.
-->
<% logger.info("LIST: The class of @student is #{@student.class}") %>
<% logger.info("LIST: The class of @assignments is #{@assignments.class}") %>
<% logger.info("LIST: @student is #{@assignments}") %>
<% logger.info("LIST: @assignments is #{@assignments}") %>
<% for assign in @assignments %>
<tr>
<td><%= assign.student %></td>
<td><%= assign.description %></td>
<td><%= assign.whendone %></td>
</tr>
<% end # end the "for" %>
</table>
</body>
</html>
Any suggestions?
You are using the variables correctly, but the error would suggest that Assignment.get_student
is returning nil instead of a student. 您正确使用了变量,但是错误提示
Assignment.get_student
返回nil,而不是学生。 Check this method in the Assigment model. 在Assigment模型中检查此方法。
Also, not sure if it was a paster error, but your controller should look like this: 另外,不确定这是否是粘贴错误,但您的控制器应如下所示:
class VerifyController < ApplicationController
def list
@student = Assignment.get_student
@assignments = Assignment.get_assignments
logger.info("VERIFY: @student is #{@student}")
logger.info("VERIFY: @assignments is #{@assignments}")
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.