簡體   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