Ruby助手抛出零分割错误

时间:2015-11-21 01:00:57

标签: ruby-on-rails ruby methods yaml helper

我在rails中循环遍历数据文件(yaml),如下所示:

<% data.quotations.each_with_index do |quotation,index| %>
   <p class= "quote-<%= quotation_letter_for_index(index) %>">
     <%= quotation.quote %>
   </p>
<% end %>

数据加载得很好,但<%= quotation_letter_for_index(index) %>生成的类由于零除错误而失败。为此提供支持的红宝石助手是:

module QuotationHelpers
  QUOTATION_LETTERS = %w(a b c d e f g h)

  def quotation_letter_for_index(index)
    letter_index = QUOTATION_LETTERS.length % index
    QUOTATION_LETTERS[letter_index]
  end
end

这个想法是它会应用字母a-h并重复。

加载时,会抛出错误:ZeroDivisionError at / divided by 0

知道导致此错误的原因是什么?这是由于初始索引值为0?

1 个答案:

答案 0 :(得分:1)

你应该做

letter_index = index % QUOTATION_LETTERS.length

而不是

letter_index = QUOTATION_LETTERS.length % index

尝试QUOTATION_LETTERS.length % 0时出现错误。