使用Haml视图对下拉菜单数据进行排序

时间:2017-03-06 22:04:03

标签: ruby-on-rails haml

我对我的一个观点有这个看法。这里的任何人都可以帮我弄清楚如何对传入的数据进行排序吗?我需要能够以非常具体的方式组织数据,因此按asc或desc顺序排序对此没有帮助。有谁知道如何实现这一目标?如果是这样,是否有指南显示它去哪里?我尝试了很多东西,似乎没什么用。也许我的方法不对?

- fields = %w(title description)
- sortable = %w(title)

= render :partial => 'shared/index', :locals => { :klass => PermissionGroup, :objects => @permission_groups, :fields => fields, :sortable => sortable }

这就是我在控制器中所拥有的:

class PermissionGroupsController < ApplicationController
 standard_controller_actions :index
 standard_controller_actions :show
 standard_controller_actions :new, :create
 standard_controller_actions :edit, :update
 standard_controller_actions :destroy
 standard_controller_actions :autocomplete
 standard_controller_actions :history
 standard_controller_actions :url_list
end

这就是我对助手的看法:

module PermissionsHelper

def objects_permission_groups(object)

  if object.new_record? and
    permission_groups_with_create = current_user.permission_groups_with(:create) and
   permission_groups_with_create.count == 1
    object_permission_groups = permission_groups_with_create
  else
    object_permission_groups = object.permission_group_ids
  end
 object_permission_groups
end

def permission_group_options(_)
 PermissionGroup.all.map { |g| [g.title.titleize, g.id.to_s] }
end

下拉菜单显示:

b
c
d
a
x

但我希望它显示:

x
d
a
c
b

这不是asc或desc order ...就像我想要以硬编码方式排序的一组已知事物一样。

1 个答案:

答案 0 :(得分:1)

假设您想要对特定的排序顺序进行硬编码,我最常见的解决方法是:

a)在模型的数据库表中添加一个整数sort_order

b)使用项目的排序顺序填充(例如,x将具有值1,d将具有值2,依此类推) - 如果您希望将其部署到生产服务器,则可以通过迁移执行此操作

c)按该列升序排序...

未来的nice-interfaces将允许您在浏览器中编辑排序顺序,例如使用拖放式javascript(或者只需手动输入数字)。