루비

2010-12-07 11 views
0
에 무기 호 클래스 오류 없애하기

나는 현재와 같은 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

모든 문제 해결 방법? 감사합니다.

답변

4

@releases 변수가 nil 인 것 같습니다.

이 작업을 수행 할 수 있습니다 @releases.compact.in_groups_of(4).each do ...

Array#compact 제거 nil 요소 원래 배열의 복사본을 반환합니다.

그러나 처음에는 왜 그 중 하나가 0입니까?

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

내가 compact``에 대해 알고하지 않았다

+0

(in_groups_ofeach_slice에 대한 단지 ActiveSupport의 별칭) :이 그룹의 작동 방식 때문에

이, 그룹의 문제가되지 않습니다. 좋은! –

+0

나는 원소가 없다. 배열에 30 개의 값이있다. 그리고 루비가 4 개의 그룹으로 나뉘어 질 때, 28/4 = 7이므로 열당 7 개의 값이 필요하다. 그러나 배열 번호 31에 도달하면 값을 얻으려고 시도하지만 아직 작성되지 않았으므로 nil이 반환됩니다. 그러나 콤팩트는 저를 위해 그것을했다. 감사합니다 :) – TheRealVayne

+0

그건 어떻게 in_groups_of 작품 아니에요. 나는 당신이 무의미한 요소를 가지고 있다고 확신한다. 내 대답을 업데이트했습니다. – glebm