Rails - 视图中的实例变量nil对象

时间:2011-12-01 03:16:21

标签: ruby-on-rails

我正在使用一些基本的Rails脚手架,并且知道视图中经常使用实例变量来显示从控制器传递的数据。

在我的应用中,数据库中有一些示例用户(我可以使用results = Result.all在控制台中提取)

在我的results_controller文件中,索引操作也有此代码(由rails自动生成)

@results = Result.all

所以我想找出并显示NEW.html.erb顶部有多少用户(不在index.html.erb中),所以我把它放在

<%= @results.count %>

在views / results / NEW.html.erb中,但它给了我一个关于nil对象的错误消息。你可以解释吗?

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.count

但是,如果我把这个

<%= @results.count %>
在INDEX.html.erb中

,它显示数字......

注意:执行此操作的目的如下:在new.html.erb上,我有一个表单供用户输入一些简单信息。我正在计划使用&lt;%= @ results.count%&gt;告诉用户该页面上有多少人已经提交了信息...

如果你不能回答这个stackoverflow问题,你能解释另一种方法来达到同样的效果吗?

1 个答案:

答案 0 :(得分:1)

这个问题没有说明,如果你已经这样做了,请原谅我。但是实例变量需要在与当前访问的操作相关的方法中声明。在这种情况下,这是新的行动。所以你应该有类似这样的代码:

def new
  @result = Result.new
  @results = Result.all
end

您也可以将@results实例方法替换为:

@results_count = Result.count