2013-03-06 2 views
87

다른 개발자에게 도움을주기 위해 비슷한 질문이 없기 때문에. 같은 접근 방식은 다른 속성에 동적 값을 할당 할 수 있습니다슬림 동적 조건부 클래스

div class=(is_active? ? 'active' : 'inactive') 
div class=('active' if is_active?) 

:

div class=(is_active? ? 'active' : 'inactive') 
div class=('active' if is_active?) 

답변

116

아래의 예를 참조하십시오. 나는 그것이 흠 is_bar 경우로 느낄 수 있지만 당신은 내가

div class=(('foo ' if is_foo?) + ('bar' if is_bar?)) 

같은 지금 여러 조건을

+2

여러 조건에서 어떻게합니까? –

+0

아래의 설명을 참고하십시오. –

+0

다음과 같은 클래스를 추가 할 수도 있습니다 :'div.councilor class = (councilor.retired?? "retired": "")'생성 :'div.councilor.retired' –

11

를하고있는 중이 야 한 경우? (흠이 foo 뒤 공백 문자)

<div class="foo "></div> 

에 허위 생성 된 HTML 결과를 반환합니다. 만약 누군가가 그것을위한 해결책을 가지고 있다면 대단 할 것입니다.

+6

이 경우'String # rstrip'을 시도하십시오 2 조건 : 'div class = (('(' 'is_foo라면)'+ '('bar '는 is_bar?)). 또는 여러 조건에 대해'div class = ([('is'foo '가 is_foo이면?), (is_bar가 있으면'bar '). compact.join (' '))' –

17

목록에 클래스를 포함 할 필요가없는 경우 클래스 배열과 nil 요소를 사용하고 nil 요소를 제거하고 마지막으로 모두 함께 조인하려면 compact 배열을 사용하십시오.

div class=(["cday", "col-md-1", day.day == 1 ? "col-md-offset-#{day.cwday-1}" : nil].compact.join(' '))