2013-02-24 39 views
-1

此迭代打印最高索引值。Rails迭代數學運算符導致參數數量錯誤

它的工作原理和8次打印8次。

- @videos.each_with_index do |video, index| 
    = index.size 

當我加入數學運算符不工作,給我這個錯誤:錯誤的參數數目(1 0)

- @videos.each_with_index do |video, index| 
    = index.size - 1 
+0

如果這個問題被標記下來,請至少給出一個理由。 – 2013-02-24 18:33:15

+1

這是在HAML模板中? 當你做'=(index.size) - 1'時會發生什麼? – 2013-02-24 18:42:17

+0

噢,謝謝你,這是一個HAML模板,你的答案奏效。請重新發布您的答案,並將其標記爲正確。 – 2013-02-24 18:46:06

回答

1

這似乎是:

index.size - 1 

被解釋爲:

index.size(-1) 

嘗試在括號迫使其添加到解釋正確的方法:

(index.size) - 1 

或:

index.size() - 1 
+1

好吧,添加parens可能會修復haml上下文中的異常,但這個回答並沒有解決問題的根源。 'index.size'是Fixnum的字節大小,幾乎肯定不是OP所想的那樣。 – dbenhur 2013-02-25 03:02:30

+0

是的,你是對的,我沒有看到。已經提出了你的答案。 – 2013-02-25 09:27:48

3

index在你的例子是一個Fixnum,該元素的索引在枚舉中。 Fixnum#size返回Fixnum的機器表示中的字節數。可能不是你要找的東西。它接受零個參數來解釋你得到的異常。

index.size返回8這一事實是因爲您運行在64位體系結構上,並且與@videos的大小無關。