未定义的方法`每个'为零:NilClass
<% max_level = Spree::Config[:max_level_in_taxons_menu] || 1 %>
<nav id="taxonomies" class="sidebar-item" data-hook>
<% @taxonomies.each do |taxonomy| %>
<% unless taxonomy.name == 'Tags' %>
<h6 class="taxonomy-root"><%= Spree.t(:shop_by_taxonomy, :taxonomy => taxonomy.name) %></h6>
<%= taxons_tree(taxonomy.root, @taxon, Spree::Config[:max_level_in_taxons_menu] || 1) %>
这是我得到的错误,这是我更新为taxonomies.each.to_a的代码,不确定这是否正确,如何更新代码,以便服务器将运行新代码而不是旧代码?
这是更新后的代码
<% max_level = Spree::Config[:max_level_in_taxons_menu] || 1 %>
<nav id="taxonomies" class="sidebar-item" data-hook>
<% @taxonomies.each.to_a do |taxonomy| %>
<% cache [I18n.locale, taxonomy, max_level] do %>
<h6 class='taxonomy-root'><%= Spree.t(:shop_by_taxonomy, :taxonomy => taxonomy.name) %></h6>
<%= taxons_tree(taxonomy.root, @taxon, max_level) %>
<% end %>
<% end %>
</nav>
答案 0 :(得分:0)
看起来你正在做的是将一个零对象强制到一个数组,这将是有效的,这不是一个理想的解决方案。你可以用这个包装整个事情:
<% if @taxonomies && @taxonomies.any? %>
#your code goes here
<% end %>
...将检查分类变量的存在,并确保在运行代码之前它不是一个空数组。至于获取服务器上的代码,您必须发布有关部署设置和版本控制的更多信息以回答该问题。