0

我在我的 postgres 数据库中有一个视图,它在我的frequencies列上返回一个数组。不幸的是,它有时会返回诸如{NULL}(由于原始数据)之类的值。

在我的 Rails 视图中,我有类似的东西:

dataset = [
    <% @item.each do |i| %>
        {   
            name: "<%= i.device %>" 
            lng: <%= i.longitude %> 
            lat: <%= i.latitude %>
            frequencies: <%= i.frequencies.to_s.html_safe %>
        },
    <% end %>
]

这似乎工作得很好 - 除非它达到包含以下内容的记录{NULL}

在 javascript 控制台中,它显示:

Uncaught ReferenceError: nil is not defined 

并在 html 中显示:

  ...
  }, {
    name: "blah",
    lng: -122.2,
    lat: 37.4,
    frequencies: [nil]
  }, { 
  ...

我可以通过遍历控制器中的列表来解决这个问题,但我认为这会相当冗长(并且浪费周期)。

有没有办法让erb[]在(而不是[nil])json为空时输出“正确”?

4

1 回答 1

3

试试这个:

 <%= i.frequencies.compact %>

紧凑的例子:

 [nil].compact #=> []
 [1,2, nil, 3, nil].compact  #=> [1,2,3]
于 2013-03-27T19:12:31.653 回答