Rails - 条件html属性

mar*_*ark 7 html conditional ruby-on-rails

环顾文档,我看不出正确的方法来解决这个问题.这是使用未重构代码的示例:

= link_to user.name, user, :meta => "#{user.public? ? '' : 'nofollow noindex'}"
Run Code Online (Sandbox Code Playgroud)

现在这可能与任何html属性相同,结果是我没有有效的xhmtl,因为在没有传递条件的情况下空标记.

<a href='/users/mark' meta=''>Mark</a>
Run Code Online (Sandbox Code Playgroud)

如何使属性定义成为条件,而不仅仅是它的值.

dtr*_*sbo 18

使用nil而不是空字符串:

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


Ann*_*nie 5

这个问题已得到解答,但我想提一下drasbo's 方式行不通的特殊情况。

如果您想让属性的存在成为有条件的。说检查属性input[type=checkbox]

check 属性的存在造成了差异,遗憾的是浏览器往往会忽略它的值。

不幸的是,它不适用于 HAML 语法。为此,您需要回退到标准 HTML 标记:

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