我在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?
答案 0 :(得分:1)
你应该做
letter_index = index % QUOTATION_LETTERS.length
而不是
letter_index = QUOTATION_LETTERS.length % index
尝试QUOTATION_LETTERS.length % 0
时出现错误。