0

当我尝试这个时,我得到 {a: 1, b:} for c not present。当 c 存在时,我得到 {a:1,b:1} 这是正确的。但是我怎样才能有条件地隐藏节点 b 以便我只能得到 {a:1}?

{"a":   <%= json @teams.count %>
,"b":   <%= json @teams.num if @c.present? %>}
4

1 回答 1

1

您可以将 ruby​​ 哈希传递给json它,它会正确计算出来

<%= json( a: @teams.count, b: (@teams.num if @c.present?) ) %>

您的方法的问题是您试图自己渲染字符串,但nil被渲染为空格而不是空字符串''。理论上你可以像这样修复它:

{"a":   <%= json @teams.count %>
,"b":   <%= json(@c.present? ? @teams.num : '' %>}

但是如果您使用第一种方法,您可以避免大部分麻烦。

于 2012-10-17T01:39:09.443 回答