【问题标题】:ActionView::Template::Error (undefined method `each' for nil:NilClass)ActionView::Template::Error (nil:NilClass 的未定义方法 `each')
【发布时间】:2013-04-10 15:29:25
【问题描述】:

我有一个奇怪的问题。我在本地运行 Rails 服务器,一切正常。但是当我尝试在云服务器(亚马逊 AWS)中克隆 Rails 服务器时,一个控制器不起作用。

我是 Rails 的新手,但我不知道发生了什么。我还有其他一些实体在工作,但这个没有。

当我尝试获取 /ingressos 时:

Showing /home/ubuntu/bilheteria_mobile_server/app/views/ingressos/index.html.erb where line #14 raised:

undefined method `each' for nil:NilClass
Extracted source (around line #14):

11:     <th></th>
12:   </tr>
13: 
14: <% @ingressos.each do |ingresso| %>
15:   <tr>
16:     <td><%= ingresso.usuario.nome %></td>
17:     <td><%= ingresso.conteudo.titulo %></td>
Rails.root: /home/ubuntu/bilheteria_mobile_server

我知道我的 Ingresso 正在变为零,但这会是什么?如果在我的本地服务器中我可以运行所有内容?

谁能给我一个提示?谢谢!

编辑:

无缘无故,它变得有效!好了,错误改了,出现了:

我使用时加载 Base64 时出错:需要“Base64”。但我需要这个稍后在创建时做一些事情。如何加载 Base64?我的云服务器是 linux 机器和我的本地服务器是 mac 有什么区别?

谢谢!

【问题讨论】:

  • 如果这只是一个标准的 Rails 问题,我会说检查控制器的 index 定义以确保您定义了 @ingressos = Ingressos.all。无论如何都值得检查,但如果它在本地服务器上工作,我不太确定这是问题所在。
  • 能否查看云数据库,查看链接到 Ingressos 的表是否有有效记录?也许您在本地数据库中有 Ingressos 记录,但在远程数据库中没有。
  • 我已经编辑了我的问题,感谢所有提示,你能帮我解决这个新问题吗?
  • 伙计们,我想出了问题所在。我不知道为什么错误会从有问题的错误变为 base64,但是当我在本地机器中使用 require 'Base64' 时,它可以工作,但是在云机器中我需要更改为 require 'base64',小写。不知道为什么:p
  • 您的本地计算机是带 Windows 的 PC 吗?我的猜测是它起作用的原因是您的本地计算机使用不区分大小写的文件系统,而您正在运行的 ubuntu vm 使用区分大小写的文件系统

标签: ruby-on-rails actionview


【解决方案1】:

正如我在 cmets 中所说,将 require "Base64" 更改为 require "base64" 解决了我的问题。第一个错误消失了,这很奇怪,但我不会抱怨这个。感谢那些试图在评论会议中与我解决问题的人。赛亚

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多