2011-10-28 3 views
1

다음보기 코드의 예에서 @thing을 두 번 사용하지 않아도됩니까? nil을 확인해야하지만보기가 매우 어수선 해지고 있습니다.보기에서 반복 제거

if @thing 
    @thing 
end 

또는

그냥 일이 nil 인 경우, 당신은 할 수 있어야 출력 @thing 또는 아무것도합니다
@thing unless @thing.nil? 
+1

@ thing if @ thing은 아마도 내가 아는 가장 짧은 것입니다. –

+0

Ta, Jakub. 알아두면 좋겠지. 나는 분명한 사실을 놓치지 않았다. – snowangel

답변

0

[andand] [1. nil을 반환합니다

isbn.pubdate.andand.strftime("%d %B '%y") 

이 나 올바른 형식 문자열은 무엇 pubDate의에 따라 : 알렉스의 응답에 코멘트를 보면

, 당신은 같은 끝낼 수 있습니다.

1

그냥 수행 @thing이 nil입니다

<%= @thing %> 

경우 Ruby는 Nil.to_s을 호출하여 ""을 반환합니다 (즉, 아무 것도 출력되지 않습니다). 그렇지 않으면 전화가 걸립니다. @thing.to_s

+0

내 질문에 답하기 때문에 이것을 바로 표시 할 것입니다. 그러나 실생활의 예는'isbn.pubdate.strftime ("% d % B '% y")'입니다. pubdate가 0이면 strftime을 nil로 호출 할 수 없으므로 오류가 발생합니다. 다른 메소드가 호출 될 때 nil을 검사하지 않는 방법을 알고 있습니까? 나는 지금 추한 사람을 도우미로 옮기고 있지만, 도우미가 추한 사람이되는 것을 원치 않습니다! – snowangel

+1

@snowangel <% = isbn.pubdate.try (: strftime, "% d % B '% y") %>. try는 send()의 별칭이므로 try을 nil에 호출하면 nil이 반환되므로 체인도 연결할 수 있습니다. Foo.bar.try (: baz) .try (: tos) # => nil – Unixmonkey

+0

오, 영광스러운. 내가 어딘가에 send/try가 나쁜 것을 읽지는 않았지만? – snowangel