当没有找到关联时,Rails(ruby)创建空数组

时间:2012-05-22 17:53:01

标签: ruby arrays activerecord ruby-on-rails-3.1 simple-form

所以我有这段代码:

= f.input :aspectRatioId, :label => 'Aspect Ratio', 
:input_html => { :id => 'dvd_aspectRatio_tokens', :data => { :load => [@dvd.aspectRatio] } }

我想在关联中找不到任何内容时创建一个空数组。现在当找不到任何内容时,它会返回[null],这会使标记为[]

的tokeninoput javascript失效

我可以通过创建另一种方法来实现:

def self.series_without_empty_values(dvd)
  series = [dvd.dvd_series]
  if series[0].nil?
    series = []
  end
  return series
end

但我宁愿在表单的:load =>调用中执行此操作。这甚至可能吗?

1 个答案:

答案 0 :(得分:4)

使用Array.compact删除数组中的nil值:

[ "a", nil, "b", nil, "c", nil ].compact
=> [ "a", "b", "c" ]

[nil].compact
=> []