繁体   English   中英

Middleman标签排序不区分大小写

[英]Middleman tag sort case insensitive

在Middleman静态网站生成器中,对tags数组进行排序区分大小写。 使用代码时,大写字母在小写字母之前排序,例如:“ A,B,C,a,b,c”:

<% blog.tags.sort.each do |tag, articles| %>
<% end %>

看来我应该能够使用Ruby的sort_by(&:downcase) ,例如:

<% blog.tags.sort_by(&:downcase).each do |tag, articles| %>
<% end %>

但这给出了错误:

NoMethodError

#<Array:0x007fc4baac00b8>的未定义方法'downcase'

如何区分不区分大小写的tags集合?

blog.tags实际上在数组中返回多个ruby对象。 因此,Array:0x007fc4baac00b8的错误未定义方法“ downcase”是因为blog.tags类似于以下内容。

[
 #<Array:0x007f9a41300cb8 id: 5, name: "Ruby">,
 #<Array:0x007f9a41300cb8 id: 5, name: "Ruby">,
]

我不太肯定您正在使用Tag上的活动记录,但是您可以在Tag模型类中对其进行排序。

 class Tag < ActiveRecord::Base
  scope :order_by_name, -> { order('LOWER(name)') }
 end

 # erb 
 <% blog.tags.order_by_name.each do |tag, articles| %>
 <% end %>

排序不区分大小写: sort{|a,b| a.to_s.downcase <=> b.to_s.downcase} sort{|a,b| a.to_s.downcase <=> b.to_s.downcase}

应用于erb文件中的Middleman Tag类实例,如下所示:

<% blog.tags.sort{|a,b| a.to_s.downcase <=> b.to_s.downcase}.each do |tag, articles| %>
<% end %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM