2013-07-07 7 views
1

저는 특정 블록에 값이 존재하는지 확인하고, 해당 블록의 내용을 표시하려고하고 "Nothing for this yet"라고 표시하지 않으려 고합니다. 나는 otherSO posts을 연구했지만 구현은 꺼야합니다.nil 레일에 대해 혼란 스럽습니다.

<% @profiles.each do |profile| %> 
    <%= profile.current_club %> 
    <% if profile.listings %> 
    <%= video_thumb_embed(profile.listings.last.video).html_safe %> 
    <% end %> 
<% end %> 
  • 비디오는 명부 모델의 속성입니다.
  • 색인 페이지에 모든 사용자 프로필을 표시하고이 색인 페이지에 추가 한 최신 비디오를 표시하려고합니다. 사용자가 추가되지 않은 경우
  • 이 오류 아웃 목록 그래서 나는 각 블록의 간단한 확인이 될 것이라고 생각하지만 추가 한 다음에 그 오류를 밖으로

    전무에 대한

    정의되지 않은 메서드`비디오 ' NilClass

여기서는 무엇을 이해하지 못하겠습니까? 위의 경우 프로필 페이지에 동영상이 표시되면 프로필이 표시되고, 표시되지 않으면 아무 것도 표시되지 않습니다.

+0

오류로 인해 'profile.listings.last'는 nil입니다. 'profile.listings'을 출력하여 목록이 배열되어 있는지 확인하십시오. – Huy

+0

'profile.listings'을 출력하면'[]'을 줄 수 있습니다. 좋아, 그럼 사용자가 아직 목록을 추가하지 않은 경우 배열은 비어 있습니다. 이것은 배열에 요소가 있고 검사가 예상대로 작동하는지 확인하는 것입니까? –

+0

네,'if profile.listings'을'if! profile.listings.blank? '로 변경하면됩니다. – Huy

답변

3

profile.listings이 비어 있거나 비어 있지 않은지 확인하고 확인하고 싶습니다. 빈 배열에서 last 메서드를 호출하면 nil을 반환합니다.

<% if profile.listings %>은 빈 배열이 있어도 true을 반환합니다.

<% if !profile.listings.blank? %> 또는 <% unless profile.listings.blank? %>이 트릭을 수행해야합니다.

+0

완벽하게, 나는 단지'.empty?'와 같이 읽었습니다. 그것을 말해 주셔서 감사합니다. 모든 것이 작동합니다. –

+0

문제 없으니 기꺼이 도와 드리겠습니다. – Huy

관련 문제