Условно создаем скрытый атрибут в Slim с Ruby на рельсах

#ruby-on-rails #slim-lang

Вопрос:

Я пытаюсь заставить Slim сгенерировать следующий HTML-код, если УСЛОВИЕ верно:

<div id="start_button" hidden="hidden">

Я пробовал различные методы, такие как очевидные:

 #start_button #{('hidden="hidden"' if CONDITION?)}
     = link_to 'Get Started', ...etc...
 

но это порождает:

 <div id="start_button">hidden="hidden"
= link_to 'Get Started',..etc...
 

Я знаю, как это сделать при настройке атрибута, такого как класс и т. Д. к чему-то, но поскольку с «скрытым» должно быть все или ничего, это вызывает у меня проблемы.

Этим вечером я побывал в нескольких кроличьих норах, так что любая помощь будет признательна!

Ответ №1:

Об этом говорится в документах:

Атрибуты Ruby

Напишите код ruby непосредственно после =. Если код содержит пробелы, вы должны заключить код в круглые скобки (…). Вы также можете напрямую записывать хэши {…} и массивы […].

Таким образом, все, что находится внутри () , оценивается как код Ruby, если оператор оценивается как false, он каким-то образом «пропущен», в противном случае он выполняет то, что указано в ветке true.

 #start_button hidden=('hidden' if true)
<div hidden="hidden" id="start_button"></div>

#start_button hidden=('hidden' if false)
<div id="start_button"></div>
 

Комментарии:

1. Ладно, я думаю, это то же самое, что и другие атрибуты. Я не ожидал «пропущенного» кусочка. Я думал, что это приведет к результату <div hidden id="start_button"></div> , который не будет хорошим. Теперь я знаю. Спасибо!