2016-10-04 6 views
1

Ruby Slim을 사용하여 인라인 if을하려고합니다. 아래에있는 내 예를 감안할 때 루비 슬림 인라인

... 두 경우 모두

- if @droppable 
    .panel data-draggable="true" 
    span More content here 
- else 
    .panel 
    span More content here 

는 유일한 차이점은 최상위 .panel 요소에 data-draggable 속성의 존재이다. .panel의 내용은 동일합니다, 그래서 나는 다음과 같은 것을 달성하고 싶습니다 :

.panel (@droppable ? data-draggable="true") 
    span More content here 

슬림이를 달성하는 방법이 있나요를?

+1

첫 번째 예가 정확합니다. @droppable에 문제가있을 수 있습니다. 페이지에서 인쇄하여 값을 확인하십시오. –

+0

"작동하지 않습니다"는 부적절한 오류보고입니다. 정확한 오류 메시지와 스택 추적을 제공해주십시오. – mudasobwa

+0

"작동하지 않습니다."죄송합니다. "span hello"는 @droppable이 true가 아닌 경우에만 표시됩니다. 두 경우 모두 안녕하세요 보여줄 방법을 모르겠습니다. – Mobidi

답변

0

사용 dynamic tags :

ruby: 
    def panel! 
    {tag: 'panel'}.tap do |tag| 
     tag[:"data-draggable"] = true if @droppable 
    end 
    end 

*panel! 
    span hello 
+0

확실히 이것을 사용하려고합니다. 고마워요! – Mobidi

+1

단순한 선택적인 속성을 얻기 위해 조금 과잉 함. – meagar

+0

예.하지만 "사람에게 물고기를주고 하루 동안 먹이십시오. 남자에게 물고기를 가르치면 일생 동안 먹일 수 있습니다. " – mudasobwa

1

가 여기에 if 필요가 없으며, 삼항 연산자는 세 개의 피연산자가 아닌 두 가지가 필요합니다.

특정 값, 또는 부재와 속성의 존재에 truthy/falsy 값을 설정하기 위해 && 연산자를 사용하여 의도적시키는, 전무/거짓 값을 갖는 속성을 생략하도록 설계되어 슬림 HAML 모두 :

슬림에서

: HAML에서

.panel data-draggable=(@droppable && "true") 
    span Hello 

:

.panel{data: {draggable: @droppable && "true"}} 
    %span Hello 

두 경우 모두 @droppable이 truthy 값인 경우 data-draggable="true"이 추가되고 그렇지 않은 경우 속성이 생략됩니다.

+0

이것은 확실히 받아 들여지는 대답이어야합니다. 동적 태그는 과도한 공격입니다. – jeffdill2