【问题标题】:Getting Rid of Nil Class Error in Ruby摆脱 Ruby 中的 Nil 类错误
【发布时间】:2010-12-07 03:11:08
【问题描述】:

我目前有一个分为 4 列的表格:

  <table id="customers">
<tr>
  <th><em class='require'></em><%= Release.columns_hash['version'].human_name  -%></th>
  <th><em class='require'></em><%= Release.columns_hash['version'].human_name  -%></th>
  <th><em class='require'></em><%= Release.columns_hash['version'].human_name  -%></th>
  <th><em class='require'></em><%= Release.columns_hash['version'].human_name  -%></th>
</tr>
<% @releases.in_groups_of(4).each do |releasesplit| %>
<tr>
   <% releasesplit.each do |release| %>
   <td align="center"><%= release.version %></td>
   <% end %>
</tr>
<% end %>

但是问题是每当我向表中添加另一个不能被 4 整除的条目时,我都会收到错误消息:undefined method version' for nil:NilClass

任何想法如何解决这个问题? 谢谢,

【问题讨论】:

    标签: ruby-on-rails multiple-columns


    【解决方案1】:

    您在@releases 变量中的一个版本似乎是nil

    您可以这样做: @releases.compact.in_groups_of(4).each do ...

    Array#compact 返回原始数组的副本,其中删除了 nil 元素。

    但是,我强烈建议您首先调查为什么其中一个是 nil。

    这不是分组的问题,因为分组是这样工作的:

    irb(main):002:0> [1,2,3].each_slice(2) {|group| puts group.inspect}
    [1, 2]
    [3]
    => nil
    

    in_groups_of 只是 each_slice 的 ActiveSupport 别名)

    【讨论】:

    • 我不知道compact。不错!
    • 我没有 nil 元素,只是数组有 30 个值,当 ruby​​ 尝试分成 4 个组时,28/4 = 7,所以每列有 7 个值。但是当它到达数组编号 31 时,它会尝试获取该值,但它尚未创建,因此返回 nil。但是紧凑型为我做到了。谢谢:)
    • in_groups_of 不是这样工作的。我很确定你有一个 nil 元素。我已经更新了我的答案。
    猜你喜欢
    • 2011-05-31
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多