Rails erb Json查看条件渲染

时间:2012-10-17 01:35:50

标签: ruby ruby-on-rails-3 json ruby-on-rails-3.2 erb

当我尝试这个时,我得到{a:1,b:}因为c不存在。当c存在时,我得到{a:1,b:1}这是正确的。但是如何有条件地隐藏节点b以便我只能获得{a:1}?

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

1 个答案:

答案 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 : '' %>}

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