#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>
, который не будет хорошим. Теперь я знаю. Спасибо!