Ruby on rails rails中未定义的方法[]意味着什么?

Ruby on rails rails中未定义的方法[]意味着什么?,ruby-on-rails,methods,null,Ruby On Rails,Methods,Null,我得到以下错误: undefined method `[]' for nil:NilClass 第50行中的相关代码段: 47: <%=h @contact.date_entered.to_date %></br> 48: Next event: 49: <% next_delayed_todo = @contact.next_delayed_todo %> 50: <% unless next_delayed_todo[:event]

我得到以下错误:

undefined method `[]' for nil:NilClass
第50行中的相关代码段:

 47: <%=h @contact.date_entered.to_date %></br>  
 48: Next event: 
 49: <% next_delayed_todo = @contact.next_delayed_todo %> 
 50: <% unless next_delayed_todo[:event].nil? %>
 52: <%= next_delayed_todo[:event].title %> </br>
47:
48:下一项活动: 49: 50: 52:

这意味着您对nil对象调用了[]。在这种情况下,next_delayed_todo为零

你想要的东西更像:
除非下一次推迟,否则为零next\u delayed\u todo[:event].nil?

这意味着您对nil对象调用了[]。在这种情况下,next_delayed_todo为零

你想要的东西更像:
除非下一次推迟,否则为零next\u delayed\u todo[:event].nil?

这意味着NilClass没有实现[]方法。这反过来意味着,在您的代码中,next\u delayed\u todo是nil


那是零吗?现在,您已经检查next_delayed_todo[:event]返回的值是否为nil。您还应该为next_delayed_todo添加一个nil检查,这意味着NilClass没有实现[]方法。这反过来意味着,在您的代码中,next\u delayed\u todo是nil


那是零吗?现在,您已经检查next_delayed_todo[:event]返回的值是否为nil。您还应该为next_delayed_todo添加一个nil检查

查看如何在视图中有3行连续的代码?这是一个标志,你应该把它拉到助手中,以保持你的视图干净

新视图代码:

<%=h @contact.date_entered.to_date %></br>  
Next event: <%= next_delayed_todo(@contact) %> </br>

请注意,您得到的错误是因为
next\u delayed\u todo
为零。助手方法的第一行使用
rescue”“
设置另一个值(如果为nil)。您可以将其替换为
rescue“none.”
或任何其他有意义的字符串。

查看如何在视图中连续显示3行代码?这是一个标志,你应该把它拉到助手中,以保持你的视图干净

新视图代码:

<%=h @contact.date_entered.to_date %></br>  
Next event: <%= next_delayed_todo(@contact) %> </br>

请注意,您得到的错误是因为
next\u delayed\u todo
为零。助手方法的第一行使用
rescue”“
设置另一个值(如果为nil)。您可以将其替换为
rescue“none.”
或任何其他有意义的字符串。

NoMethodError:是从exception派生的类,是一个exception。在强动态类型语言中,如果试图对不存在该方法的类型使用该方法,则会引发错误类型异常

缺少的方法是一个函数 -http://ruby-doc.org/core/classes/Kernel.html#M005925

当obj被发送到 它无法处理的消息。符号是 调用的方法的符号,以及 args是任何被忽略的参数 传给它。默认情况下 当发生此错误时,解释器将引发错误 方法被调用。然而,事实并非如此 可以将该方法重写为 提供更动态的行为。这个 下面的示例创建了一个类Roman, 它用名称响应方法 由罗马数字组成, 返回相应的整数 价值观


我认为(在这一点上不要相信我)默认的method_missing函数有点像NoMethodError,它的消息是“undefined method`{method_name},for#{inspectVariableValue}:#{ClassName}”。

NoMethodError:是从exception派生的类,是一个exception。在强动态类型语言中,如果试图对不存在该方法的类型使用该方法,则会引发错误类型异常

缺少的方法是一个函数 -http://ruby-doc.org/core/classes/Kernel.html#M005925

当obj被发送到 它无法处理的消息。符号是 调用的方法的符号,以及 args是任何被忽略的参数 传给它。默认情况下 当发生此错误时,解释器将引发错误 方法被调用。然而,事实并非如此 可以将该方法重写为 提供更动态的行为。这个 下面的示例创建了一个类Roman, 它用名称响应方法 由罗马数字组成, 返回相应的整数 价值观


我认为(在这一点上不要相信我)默认的method_missing函数有点像一个NoMethodError,它的消息是“undefined method`{method_name},for#{inspectVariableValue}:#{ClassName}”。

我在代码中看到一个错误,除非应该启动一个块,否则,就像它是写的一样,这行什么都不做。 因此,这应该是可行的:

 <%=h @contact.date_entered.to_date %></br>  
 Next event: 
 <% next_delayed_todo = @contact.next_delayed_todo %> 
 <% unless next_delayed_todo[:event].nil? do %>
   <%= next_delayed_todo[:event].title %> </br>
 <% end %>

下一项活动:

我看到您的代码中有一个错误,除非您应该启动一个块,否则,就像写入代码一样,该行什么也不做。 因此,这应该是可行的:

 <%=h @contact.date_entered.to_date %></br>  
 Next event: 
 <% next_delayed_todo = @contact.next_delayed_todo %> 
 <% unless next_delayed_todo[:event].nil? do %>
   <%= next_delayed_todo[:event].title %> </br>
 <% end %>

下一项活动:

Hi,我确实有以下几行代码:嗯……所以不太确定要做什么……啊,很有趣……这是我本地的,但不是heroku,我想……让我做一些调整。Hi,我确实有以下几行代码:嗯……所以不太确定要做什么……啊,有趣…这是在我的本地,但不是在heroku,我想…让我做一些调整。虽然没有回答问题,但这是我需要做的有益的更改…谢谢+1它确实解决了您的问题,但我添加了一个注释,使其明确。虽然没有回答问题,这是我需要做的有帮助的改变…谢谢+1你的问题确实有解决方案,但我添加了一个注释,使其明确。