Ruby 使用Proc按字母顺序排序

Ruby 使用Proc按字母顺序排序,ruby,ruby-on-rails-4,Ruby,Ruby On Rails 4,我想通过传递一个自定义的比较器对一些名称按字母顺序进行排序,但我似乎无法让它工作 控制器 def show @media_deals = resource.media_deals @media_deals.sort!(&sort) if params[:sort].present? end def sort resource_class::SORTING[params[:sort]] end 型号 SORTING = { cost_ascending: Proc.ne

我想通过传递一个自定义的比较器对一些名称按字母顺序进行排序,但我似乎无法让它工作

控制器

def show
  @media_deals = resource.media_deals
  @media_deals.sort!(&sort) if params[:sort].present?
end

def sort
  resource_class::SORTING[params[:sort]]
end
型号

SORTING = {
  cost_ascending: Proc.new {|a, b| a.monthly_cost <=> b.monthly_cost },
  cost_descending: Proc.new {|a, b| b.monthly_cost <=> a.monthly_cost },
  supplier_a_to_z: Proc.new {|a, b| a.name.casecmp(b.name) },
  supplier_z_to_a: Proc.new {|a, b| b.name.casecmp(a.name) },
}.with_indifferent_access
排序={
成本上升:过程新{a,b{a.月成本b.月成本},
成本下降:过程新{a,b{b.月成本a.月成本},
供应商:Proc.new{a,b | a.name.casecmp(b.name)},
供应商:Proc.new{a,b | b.name.casecmp(a.name)},
}.具有访问权限

成本排序工作正常,但按字母顺序排序时什么也没发生。有人能建议在这里做什么吗?

添加
pry
gem作为开发依赖项,将sorter修改为
supplier\u a\u to\u z:Proc.new{a,b | require'pry';binding.pry;a.name.casecmp(b.name)}
,强制调用所需的分类器,并检查
a.name
b.name
。谢谢@mudasobwa,原来名称是一样的!哎呀,对不起,allI将投票表决为“无法复制”,那么,因为这里没有我们要解决的问题。我很高兴你弄明白了。