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将投票表决为“无法复制”,那么,因为这里没有我们要解决的问题。我很高兴你弄明白了。