我无法理解以下行为
<% filter.each do |f| %>
<% aux = @taxon_ids %>
<%= check_box_tag "filter_taxon", aux << f[:id], @taxon_ids.include?(f[:id]) %>
...
<% end %>
对于我的函数的每个循环,aux
var不会重新初始化。确实,他自己中已经积累了每个ID。
答案 0 :(得分:2)
除非您要分配new
对象(或像[]
这样的文字缩写之一),否则Ruby分配是通过引用进行的,请看:
[14] pry(main)> x = []
=> []
[15] pry(main)> y = x
=> []
[16] pry(main)> y << 1
=> [1]
[17] pry(main)> x
=> [1]
如果要拥有该数组的副本,请使用.dup
或.clone
方法:
aux = @taxon_ids.dup