我正在使用一些基本的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问题,你能解释另一种方法来达到同样的效果吗?
答案 0 :(得分:1)
这个问题没有说明,如果你已经这样做了,请原谅我。但是实例变量需要在与当前访问的操作相关的方法中声明。在这种情况下,这是新的行动。所以你应该有类似这样的代码:
def new
@result = Result.new
@results = Result.all
end
您也可以将@results
实例方法替换为:
@results_count = Result.count