使用 Haml 视图对下拉菜单数据进行排序
Sort drop-down menu data with Haml view
这是我的一个观点。这里的任何人都可以帮我弄清楚如何对传入的数据进行排序吗?我需要能够以非常具体的方式组织数据,因此按 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
这不是升序或降序...就像我想以硬编码方式排序的一组已知事物。
假设您想对特定的排序顺序进行硬编码,我最常看到的解决方法是:
a) 将整数 sort_order
列添加到模型的数据库 table
b) 用项目的排序顺序填充它(例如 x 的值为 1,d 的值为 2 等等)- 如果您希望它可以部署到您的,可以通过迁移来完成生产服务器
c) 按该列升序排序...
未来的漂亮界面会让您在浏览器中编辑排序顺序,例如使用 drag/drop javascript(或者只是手动输入数字)。
这是我的一个观点。这里的任何人都可以帮我弄清楚如何对传入的数据进行排序吗?我需要能够以非常具体的方式组织数据,因此按 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
这不是升序或降序...就像我想以硬编码方式排序的一组已知事物。
假设您想对特定的排序顺序进行硬编码,我最常看到的解决方法是:
a) 将整数 sort_order
列添加到模型的数据库 table
b) 用项目的排序顺序填充它(例如 x 的值为 1,d 的值为 2 等等)- 如果您希望它可以部署到您的,可以通过迁移来完成生产服务器
c) 按该列升序排序...
未来的漂亮界面会让您在浏览器中编辑排序顺序,例如使用 drag/drop javascript(或者只是手动输入数字)。