[英]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.