2013-03-14 3 views
13

Slim에 클래스를 표시하지 않을 때 클래스 속성을 제거하고 싶습니다.속성을 표시하지 않을 때 슬림하게 HTML 태그 속성을 제거하십시오.

ERB에서, 내가 사용할 수 있습니다

<input <%= "class='foo'" if false %> /> 
<input /> 

을 나는 슬림에서이 작업을 수행하려면 어떻게합니까?

나는이 발견,하지만 난 더 관용적 솔루션이 있어야 느낌 : 속성의 값이 다음 전체 속성 (생략한다 nil입니다

| <input "#{'class=\"foo\"' if false}" /> 

답변

31

경우 실제로는 nil 또는 위해 발생 class 속성) falsetrue 다르게 동작처럼 대부분의 경우 false,하지만 그것은 본다 :

input class=('foo' if condition) 

이 출력됩니다

<input class="foo" /> 

conditiontrue 경우, 그리고

<input /> 

condition이 false 인 경우

.

5

splat (*) 연산자를 사용하면 추가 할 속성이 포함 된 해시를 사용하여 태그의 조건부 속성을 슬림하게 정의 할 수 있습니다. 속성 세트에 해시을 확장

http://www.rubydoc.info/gems/slim/frames#Splat_attributes__

플랫 연산자 태그에 추가한다. 해시가 비어있는 경우, 속성은 추가되지 않습니다. 예를 들어

,

- admin_classes = @User.admin? ? {class: "foo"} : {} 
input *admin_classes 

@ User.admin 경우? == 사실, 렌더링해야합니다.

<input class="foo"> 

if @ User.admin? @ User.admin 경우

- admin_classes = @User.admin? ? {class: ["foo","bar"]} : {} 
input *admin_classes class="biz" 

: == 거짓, 그것은 당신이 뭔가를 할 수 있습니다 켜져 병합 "클래스"또는 속성이 다른 속성과 같은 속성에 대한

<input> 

렌더링한다 ? == true로 렌더링해야합니다.

<input class="foo bar biz"> 

if @ User.admin? == 거짓, 렌더링해야 함

<input class="biz">