Rails - условные атрибуты html - PullRequest
       0

Rails - условные атрибуты html

7 голосов
/ 23 декабря 2010

Оглядываясь на документы, я не вижу правильного способа сделать это.Вот пример использования нерефакторированного кода:

= link_to user.name, user, :meta => "#{user.public? ? '' : 'nofollow noindex'}"

Теперь это может быть то же самое с любым атрибутом html, в результате чего у меня нет действительного xhmtl из-за пустого тега в случае невыполнения условия.

<a href='/users/mark' meta=''>Mark</a>

Как сделать определение атрибута условным, а не только его значение.

Ответы [ 2 ]

18 голосов
/ 23 декабря 2010

Используйте nil вместо пустой строки:

= link_to user.name, user, :meta => user.public? ? nil : 'nofollow noindex'

4 голосов
/ 26 июня 2013

На этот вопрос дан ответ, но я бы хотел упомянуть особый случай, в котором путь drasbo не сработал бы.

Если вы хотите сделать наличие атрибута условным. Скажи проверенный атрибут input[type=checkbox]!

Наличие отмеченного атрибута делает разницу, и, к сожалению, браузеры склонны игнорировать его значение.

К сожалению, он не доступен с синтаксисом HAML. Для этого вам нужно вернуться к стандартному тегу HTML:

%form
  <input type="checkbox" "#{@post.tags.include?("Special Blog")? "checked" : ""}" />
  %button
    Click Me
...