Ruby on rails 按字母顺序对分类单元(品牌)进行排序

Ruby on rails 按字母顺序对分类单元(品牌)进行排序,ruby-on-rails,spree,Ruby On Rails,Spree,Rails noob试图在客户的狂欢商店中调整一些东西 侧边栏需要包含一个产品品牌列表,我将品牌作为分类 我的shared/_taxonomies.html.erb视图包含: <% get_taxonomies.each do |taxonomy| %> <% if taxonomy.name == 'Brand' %> <h3 class='taxonomy-root'><%= t(:shop_by_taxonomy, :tax

Rails noob试图在客户的狂欢商店中调整一些东西

侧边栏需要包含一个产品品牌列表,我将品牌作为分类

我的
shared/_taxonomies.html.erb
视图包含:

  <% get_taxonomies.each do |taxonomy| %>
    <% if taxonomy.name == 'Brand' %>
      <h3 class='taxonomy-root'><%= t(:shop_by_taxonomy, :taxonomy => taxonomy.name.singularize) %></h3>
      <%= taxons_tree(taxonomy.root, @taxon, Spree::Config[:max_level_in_taxons_menu] || 1) %>
    <% end %>
  <% end %>

分类法.name.singularize)%%>
我添加了
if taxonomy.name==“Brand”
代码来去除这些类别。(我希望有更干净的方法?)

如何按字母顺序列出分类单位(品牌)


Spree 0.70.3.

最好设置为

@brand_taxonomy = Taxonomy.where(:name => 'Brand').first
在公共控制器中,如果分类显示在大多数/所有页面上,则最有可能是
application\u controller.rb
,然后只需转到:

<h3 class='taxonomy-root'><%= t(:shop_by_taxonomy, :taxonomy => @brand_taxonomy.name.singularize) %></h3>
<%= taxons_tree(@brand_taxonomy.root, @taxon, Spree::Config[:max_level_in_taxons_menu] || 1) %>
关键的更改是将
.except(:order).order(:name)
添加到助手的子对象检索中

最终视图代码如下所示:

<h3 class='taxonomy-root'><%= t(:shop_by_taxonomy, :taxonomy => @brand_taxonomy.name.singularize) %></h3>
<%= my_taxons_tree(@brand_taxonomy.root, @taxon, Spree::Config[:max_level_in_taxons_menu] || 1) %>

我自己还没有在Spree项目中实现这一点,这取决于您使用的是Rails 3.0.3+版本,但这是我建议的基本方法。

最好设置

@brand_taxonomy = Taxonomy.where(:name => 'Brand').first
在公共控制器中,如果分类显示在大多数/所有页面上,则最有可能是
application\u controller.rb
,然后只需转到:

<h3 class='taxonomy-root'><%= t(:shop_by_taxonomy, :taxonomy => @brand_taxonomy.name.singularize) %></h3>
<%= taxons_tree(@brand_taxonomy.root, @taxon, Spree::Config[:max_level_in_taxons_menu] || 1) %>
关键的更改是将
.except(:order).order(:name)
添加到助手的子对象检索中

最终视图代码如下所示:

<h3 class='taxonomy-root'><%= t(:shop_by_taxonomy, :taxonomy => @brand_taxonomy.name.singularize) %></h3>
<%= my_taxons_tree(@brand_taxonomy.root, @taxon, Spree::Config[:max_level_in_taxons_menu] || 1) %>

我自己还没有在Spree项目中实现过这一点,这取决于您使用的Rails 3.0.3+版本,但这是我建议的基本方法。

感谢您提供了非常详细的答案。它似乎不像现在那样有效。由于一个未定义变量的错误,我在我的分类树(brand_taxons.root中添加了一个
@
符号。但是,我随后为这一行的nil:NilClass`获取了
未定义的方法
根。我的应用程序\u controller.rb:(我删除了视图中的h3行,因为这也给出了一个错误。)已更正缺少“@”;对此很抱歉。如果您转到:
rails控制台
,然后输入:
Taxonomy.where(:name=>“Brand”)
…它返回什么?听起来好像没有名为“Brand”的父分类法…?此外,您将
my\u taxons\u树
helper方法添加到
application\u controller.rb
;我建议您将其放入
application\u helper.rb
,它位于
app/helpers
中。如果您确定要将其放入应用程序\u控制器,您需要将
helper\u方法:my\u taxons\u tree
添加到控制器的顶部,并将其放入私有块中(只需在
我的分类树
定义前加一行
private
。Rails更喜欢把它放在
app/helpers/application\u helper.rb
中。更正了我的位置(我读错了).application\u controller.rb:application\u helper.rb:_taxonomies.html.erb:Rails控制台输出:错误仍然存在:
未定义nil:NilClass的方法“name”
能否将完整堆栈跟踪放在一个paste中?这与您提到的第一个错误不同。感谢您提供了非常详细的答案。它似乎没有发挥应有的作用是的。由于一个未定义变量的错误,我将
@
符号添加到
我的分类树(brand\u taxons.root
。但是,我随后为这一行获得了nil:NilClass`的
未定义方法
root'。我的应用程序\u controller.rb:(我删除了视图中的h3行,因为这也给出了一个错误。)已更正缺少“@”;对此很抱歉。如果您转到:
rails控制台
,然后输入:
Taxonomy.where(:name=>“Brand”)
…它返回什么?听起来好像没有名为“Brand”的父分类法…?此外,您将
my\u taxons\u树
helper方法添加到
application\u controller.rb
;我建议您将其放入
application\u helper.rb
,它位于
app/helpers
中。如果您确定要将其放入应用程序\u控制器,您需要将
helper\u方法:my\u taxons\u tree
添加到控制器的顶部,并将其放入私有块中(只需在
我的分类树
定义前加一行
private
。Rails更喜欢把它放在
app/helpers/application\u helper.rb
中。更正了我的位置(我读错了).application\u controller.rb:application\u helper.rb:_taxonomies.html.erb:Rails控制台输出:错误仍然存在:
未定义nil:NilClass的方法“name”
能否将完整堆栈跟踪放在粘贴中?这与您提到的第一个错误不同。