【问题标题】:Rails: undefined method `+' for nil:NilClassRails:nil:NilClass的未定义方法`+'
【发布时间】:2015-06-01 10:18:42
【问题描述】:

我认为有这个超级简单的代码:

<% @something.each do |something| %>

<% i = i+1 %>

<div class="row">
<div class="span1"><span class="badge untouched"><%= i %></span></div>
</div>

<% end %>

得到这个错误

undefined method `+' for nil:NilClass

我在另一个视图中有完全相同的代码,它在那里工作! 但是,我是 Rails 新手,你知道我想做什么。也许有一种更常见的方法可以在每个循环中增加一个整数? 这个错误是从哪里来的?

感谢您的帮助!

【问题讨论】:

  • i 未定义。你很可能在另一个视图中使用 each_with_index 并且你使用 i 作为索引变量

标签: ruby-on-rails ruby


【解决方案1】:

嗯,i 必须有一个值才能增加它。

<% i = 0 %>
<% i = i+ 1 %>

【讨论】:

  • 有趣的是这很容易 - 整数默认不是 0 有什么原因吗?我已经习惯了其他语言。
  • 在 ruby​​ 中,尚未启动的变量始终为 nil。当你说i 时,我无法知道这是否是一个整数。
  • 在类型化语言中,您可能会说Integer iint i,因此解释器知道它是一个整数并将其设置为零。
  • 虽然不是我的直接问题,但这对于诊断正在发生的事情非常有帮助。我有一个存在于 3 个案例中的 2 个的日期字段,因为它没有设置,所以我遇到了这样的分页错误。谢谢。
【解决方案2】:

i 未初始化,

而不是每个使用 each_with_index 如下

<% @something.each_with_index do |something, i| %>

<div class="row">
<div class="span1"><span class="badge untouched"><%= i %></span></div>
</div>

<% end %>

【讨论】:

    【解决方案3】:

    初始化变量 i = 0

    <% i=0
    i = i+1 %>
    

    【讨论】:

      【解决方案4】:

      定义:

      def nil.+ other; other end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-17
        相关资源
        最近更新 更多