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