Ruby / Active Record:自定义排序顺序
发布时间:2020-12-17 03:49:20 所属栏目:百科 来源:网络整理
导读:我正在研究rails 3.2 ruby?? 1.9.2项目. 我从经典数据库中获取了一些值: designators = Model.find() 我用(简化代码)显示它: table class="rwy_modes_table" cellspacing='0' % designators.each do |info_design| % tr id="rwy_mode_%=info_design.id%" t
我正在研究rails 3.2
ruby?? 1.9.2项目.
我从经典数据库中获取了一些值: designators = Model.find() 我用(简化代码)显示它: <table class="rwy_modes_table" cellspacing='0'> <% designators.each do |info_design| %> <tr id="rwy_mode_<%=info_design.id%>"> <td class="spacer"><%= info_design.try(:designator) %></td> </tr> <% end %> </table> 值例如是:3L,3C,3R. (左为L,中心为C,右为4). 我不知道如何定义这个自定义订单.任何的想法 ? 解决方法
尝试这样的事情:
(app/models/designator.rb) # determines the sort value for based on my_attribute. # designators should be in the order 'l','c','r' - regardless of any preceeding numeral def sort_val return 0 if self.my_attribute =~ /l/i return 1 if self.my_attribute =~ /c/i return 2 if self.my_attribute =~ /r/i end (app/helpers/designators_helper.rb) def sorted_designators(designators) designators.sort{|a,b| a.sort_val <=> b.sort_val } end 您可以在视图中进行排序的位置 (app/views/...) sorted_designators(designators).each do |design| 或者,您可以将其移动到模型文件中的静态方法,以便在视图外部进行排序 (app/models/designator.rb) def self.sorted_designators(designators) designators.sort{|a,b| a.sort_val <=> b.sort_val } end 并像这样在你的控制器中使用它们 app/controllers... @designators = Designator.sorted_designators(designators) 注意:这是内存中的排序,因此请注意O(n)db查询,具体取决于您对此对象的排序/访问方式 另请参阅:https://stackoverflow.com/a/14282353/811255使用Comparable模块(可能是更清洁的解决方案) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |