2010-12-23 49 views
7

环顾文档,我看不到一个正确的方法来解决这个问题。下面是使用非重构的代码示例:Rails - 有条件的html属性

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

现在,这可能是与任何HTML相同属性的结果是我没有有效XHMTL由于不流通状态的情况下,空标记。

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

如何使属性定义有条件,而不仅仅是它的值。

回答

18

,而不是一个空字符串使用nil

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

4

这个问题的答案,但我想提一提,其中drasbo的办法是行不通的一个特例。

如果你想使属性有条件的存在。说检查input[type=checkbox]的属性!

检查属性的存在使差异和可悲的浏览器往往忽略其价值。

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

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