왜이 작은 코드 스 니펫 (CSS 클래스가있는 탐색 도우미)을 사용하면 elseif
행에 undefined method 'include?' for nil:NilClass
이 표시됩니까?로컬 변수가 아니어야합니다. (자체 표현식에 할당)
page_classes_string
은 'oddchap oddchap_zoidberg oddchap_zoidberg_index'와 유사 할 수 있습니다. 나는이 방법의 목적은 분명하다 생각 :
- 는
- 현재
page_string
에page_classes_string
을 비교하고 적절한 클래스 이름의 문자열을 반환은 '_index을'이 포함 된 경우page_classes_string
의 마지막 단어를 제거하십시오 일부 탐색을 위해.
나는이 코드를 irb에서 시도했지만 물론 작동하지만 내 중개자 구성에서는 작동하지 않습니다. 또한 제 3 변수를 사용하여 제 'page_classes_string'에 할당 된 변수를 다시 작성할 수는 있지만, 성가신 것 같습니다. 어떤 제안?
물론 다음 변수 이름에 첨부 된 _string
은 명확히하기위한 것입니다.
def nav_active(page_string)
if page_classes_string.match(/_index/)
page_classes_string = page_classes_string.split(/ /)[0..-2].join(' ')
end
if page_classes_string == page_string
'active'
elsif page_classes_string.include? page_string
'semiactive'
else
nil
end
end
조건부 값 외에도 'page_classes_string'에 값을 할당하고 있습니까? –
'page_classes_string' 그 자체는 현재 열려있는 페이지 - 트리의 모든 이름이 연결된 문자열을 포함하고 절대적으로 비어있는 헬퍼입니다. – cseelus
다시 확인하십시오. 적어도 가끔은 분명히 '전혀 (nil)'입니다. 'page_classes_string'은 메소드의 이름입니까? 그렇다면 같은 이름의 변수에 값을 할당하지 않는 것이 좋습니다. –