2011-04-06 2 views
1

모델 Member belongs_to Discipline, 즉 사용자는 규율을 가질 수 있지만 선택 사항입니다.레일 뷰 : 널이 될 수있는 연결 개체에 대한 설명을 표시하는 관용적 방법?

사용자 세부 정보를 표시 할 때 회원의 규율을 나타내는 관용적 인 레일스 방법이 무엇일까 궁금합니다.

내 첫 번째 방법은

<b>Discipline:</b> 
<%=h @member.discipline.name %> 

그렇지 않으면 잘 작동하지만, 회원의 징계가 Nil 경우 NoMethodError 실패합니다. 이 경우에는 아무 것도 갖고 싶지 않습니다.

내가 가진 대안의 몇 정의

  • 회원이 훈련이없는 경우
  • 경우에 출력을 제한 ""를 반환 방법 Member:discipline_name이다;

와 대안처럼 뭔가 될 것 "경우"

<b>Discipline:</b> 
<% if @member.discipline %> 
<%=h @member.discipline.name %> 
<% end %> 

이 만들 수있는 큰 결정이 아니라 내가이 작업을 수행 할 수있는 '관용적 방법 "이 있는지 알고 싶습니다 또는 일부 도우미/뭔가 또는 다른 것을 고려해야합니다.

BR, Touko

답변

2

사실, 더 Wukerplank의 답을 전개 할 때, 다음과 같은 보인다 잘 작동 꽤 간결 :

<b>Discipline:</b> 
<%=h @member.discipline.name if @member.discipline %> 
2

내 의견에서 관용적 방법은 다음과 같습니다

<b>Discipline:</b> 
<%=h @member.discipline.name if @member.displince.present? %> 
+0

내 레일스가 _present? _ 메소드를 nil 또는 내 Model 객체 용으로 사용하지 않는 것 같습니까? 하지만, if 조건을 @ member.discipline으로 대체하여 anser를 조정하는 것은 매우 간결합니다. – Touko

2

존재하지 않는 경우 아무것도 표시해야하는 경우 ternery 연산자를 사용할 수 있습니다.

<%= condition ? statement true : statement false %> 

<%= @member.discipline ? @member.discipline.name : 'none' %>