Spree 中 nil:NilClass 的未定义方法“each”
undefined method `each' for nil:NilClass in Spree
在 Spree Store 中,我有一个由 Taxonomies 组成的边栏。
例子:
食品(分类)
|-汉堡包
|-炸薯条
我使用了分类法制作的侧边栏,并应用代码构建了一个自定义的 bootstrap 菜单。为此,我做了以下操作:
我从 _taxonomies.html.rb 中获取了以下代码:
<% max_level = Spree::Config[:max_level_in_taxons_menu] || 1 %>
<nav id="taxonomies" class="sidebar-item" data-hook>
<% @taxonomies.each 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>
我做到了:(将其放入 _main_bar_menu.html.rb 文件)
<% max_level = Spree::Config[:max_level_in_taxons_menu] || 1 %>
<nav class="columns sixteen">
<nav id="taxonomies" class="navbar navbar-default" data-hook>
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
data-target="#menu-produtos-taxonomi" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse" id="menu-produtos-taxonomi">
<ul class="nav navbar-nav">
<li id="home-link" data-hook><%= link_to Spree.t(:home), spree.root_path %></li>
<% @taxonomies.each do |taxonomy| %>
<% cache [I18n.locale, taxonomy, max_level] do %>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
aria-haspopup="true" aria-expanded="false">
<%= Spree.t(:shop_by_taxonomy_only_name, :taxonomy => taxonomy.name) %>
<span class="caret"></span>
</a>
<%= taxons_tree_menu(taxonomy.root, @taxon, max_level) %>
</li>
<% end %>
<% end %>
</ul>
</div>
</div>
</nav>
</nav>
之后,每次我尝试访问包含其详细信息的产品页面(不是同时列出产品的页面)时,例如:
http://localhost:3000/products/soy-milk?taxon_id=3
我收到以下错误:
nil:NilClass
的未定义方法“each”
它指向 _main_bar_menu.html.rb 中的那一行(如上所示):
<% @taxonomies.each do |taxonomy| %>
我是 Rails 和 Spree 上 Ruby 的初学者,我不知道如何解决这个问题。如果你能帮助我,请......我将不胜感激。
您正在尝试迭代空集合。您在哪里向 @taxonomies
变量提供数据?该集合应该包含什么?也许您正在执行的查询不返回任何值,因此集合为空。检查你的控制器。
@taxonomies 集合似乎未分配给狂欢产品展示操作。您复制到视图中的代码需要分配类群。尝试查看和比较索引和显示操作的控制器,因为索引操作正在分配分类单元
<% @taxonomies.each 做|分类| %>
请写下这一行作为
<% (@taxonomies || []).each do |taxonomy| %>
它永远不会产生 nil
的错误
在 Spree Store 中,我有一个由 Taxonomies 组成的边栏。 例子: 食品(分类) |-汉堡包 |-炸薯条
我使用了分类法制作的侧边栏,并应用代码构建了一个自定义的 bootstrap 菜单。为此,我做了以下操作:
我从 _taxonomies.html.rb 中获取了以下代码:
<% max_level = Spree::Config[:max_level_in_taxons_menu] || 1 %>
<nav id="taxonomies" class="sidebar-item" data-hook>
<% @taxonomies.each 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>
我做到了:(将其放入 _main_bar_menu.html.rb 文件)
<% max_level = Spree::Config[:max_level_in_taxons_menu] || 1 %>
<nav class="columns sixteen">
<nav id="taxonomies" class="navbar navbar-default" data-hook>
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
data-target="#menu-produtos-taxonomi" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse" id="menu-produtos-taxonomi">
<ul class="nav navbar-nav">
<li id="home-link" data-hook><%= link_to Spree.t(:home), spree.root_path %></li>
<% @taxonomies.each do |taxonomy| %>
<% cache [I18n.locale, taxonomy, max_level] do %>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
aria-haspopup="true" aria-expanded="false">
<%= Spree.t(:shop_by_taxonomy_only_name, :taxonomy => taxonomy.name) %>
<span class="caret"></span>
</a>
<%= taxons_tree_menu(taxonomy.root, @taxon, max_level) %>
</li>
<% end %>
<% end %>
</ul>
</div>
</div>
</nav>
</nav>
之后,每次我尝试访问包含其详细信息的产品页面(不是同时列出产品的页面)时,例如:
http://localhost:3000/products/soy-milk?taxon_id=3
我收到以下错误:
nil:NilClass
的未定义方法“each”它指向 _main_bar_menu.html.rb 中的那一行(如上所示):
<% @taxonomies.each do |taxonomy| %>
我是 Rails 和 Spree 上 Ruby 的初学者,我不知道如何解决这个问题。如果你能帮助我,请......我将不胜感激。
您正在尝试迭代空集合。您在哪里向 @taxonomies
变量提供数据?该集合应该包含什么?也许您正在执行的查询不返回任何值,因此集合为空。检查你的控制器。
@taxonomies 集合似乎未分配给狂欢产品展示操作。您复制到视图中的代码需要分配类群。尝试查看和比较索引和显示操作的控制器,因为索引操作正在分配分类单元
<% @taxonomies.each 做|分类| %> 请写下这一行作为 <% (@taxonomies || []).each do |taxonomy| %> 它永远不会产生 nil
的错误