当我尝试这个时,我得到{a:1,b:}因为c不存在。当c存在时,我得到{a:1,b:1}这是正确的。但是如何有条件地隐藏节点b以便我只能获得{a:1}?
{"a": <%= json @teams.count %>
,"b": <%= json @teams.num if @c.present? %>}
答案 0 :(得分:0)
您可以将ruby哈希值传递给json
,它会正确识别
<%= json( a: @teams.count, b: (@teams.num if @c.present?) ) %>
您的方法的问题在于您尝试自己呈现字符串,但nil
正在呈现为空格而不是空字符串''
。你理论上可以这样解决它:
{"a": <%= json @teams.count %>
,"b": <%= json(@c.present? ? @teams.num : '' %>}
但如果您使用第一种方法,则可以避免大部分麻烦。