슬림 동적 조건부 클래스 [닫기]


100

다른 개발자를 돕기 위해 비슷한 질문이 없기 때문입니다.

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

답변:


144

아래 예를 참조하십시오.

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

동일한 접근 방식을 사용하여 다른 속성에 동적 값을 할당 할 수 있습니다.


2
여러 조건에 대해 어떻게 하시겠습니까?
Maxim Zubarev 2014 년

귀하의 답변에 대한 의견에서 아래를 참조하십시오.
Sergey Alekseev

3
이것은 또한 클래스를 추가 할 수 있습니다, 등이 : div.councilor class=(councilor.retired? ? "retired" : "") 생성 :div.councilor.retired
테라 애슐리

20

목록에 클래스를 포함 할 필요가 없으면 클래스 배열과 nil 요소를 사용하고 nil 요소를 제거하고 마지막으로 모두 결합하기 위해 배열을 압축합니다.

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

12

여러 조건이있는 경우 지금 다음과 같이하고 있습니다.

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

is_bar라면 흠집이라고 느끼지만? false를 반환하고 생성 된 HTML 결과는

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

(흠은 뒤에있는 공백 문자입니다 foo). 누군가에 대한 해결책이 있다면 굉장 할 것입니다.


7
String#rstrip이 경우 두 가지 조건으로 시도해보십시오 div class=((('foo ' if is_foo?) + ('bar' if is_bar?)).rstrip).. 또는 div class=([('foo' if is_foo?), ('bar' if is_bar?)].compact.join(' '))여러 조건에서.
Sergey Alekseev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.