Rails - 条件 html 属性

Posted

技术标签:

【中文标题】Rails - 条件 html 属性【英文标题】:Rails - conditional html attributes 【发布时间】:2011-05-29 22:04:17 【问题描述】:

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

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

现在这可能与任何 html 属性相同,结果是在条件未通过的情况下,由于空标签,我没有有效的 xhmtl。

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

我怎样才能使属性定义有条件,而不仅仅是它的值。

【问题讨论】:

【参考方案1】:

使用nil 代替空字符串:

= link_to user.name, user, :meta =&gt; user.public? ? nil : 'nofollow noindex'

【讨论】:

【参考方案2】:

这个问题已经回答了,但我想提一下drasbo 的方式行不通的特殊情况。

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

checked 属性的存在造成了差异,遗憾的是浏览器倾向于忽略它的值。

很遗憾,它不适用于 HAML 语法。为此,您需要回退到标准 HTML 标记:

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

【讨论】:

【参考方案3】:

这是一个老问题,但我一直在这样做(示例取自Annie's answer):

<input type="checkbox" <% :checked if @post.tags.include?("Special Blog") %> />

【讨论】:

以上是关于Rails - 条件 html 属性的主要内容,如果未能解决你的问题,请参考以下文章

Rails 中数字的 Excel 样式条件格式

Rails - 验证:如果一个条件为真

Rails 4:条件显示在视图内不起作用

ruby on rails 连接条件(带 squeel)

Rails as_json 包含条件

在 Rails 中使用条件显示视图元素