【问题标题】:Sort drop-down menu data with Haml view使用 Haml 视图对下拉菜单数据进行排序
【发布时间】:2017-03-06 22:04:02
【问题描述】:

我的观点之一是这样。这里的任何人都可以帮我弄清楚如何对传入的数据进行排序吗?我需要能够以非常具体的方式组织数据,因此按 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 顺序...就像我想以硬编码方式排序的一组已知事物。

【问题讨论】:

  • 问题不是很清楚,但我想你想对@permission_groups 进行排序。您需要在控制器中执行此操作。可以发一下吗?
  • 请给我们更多信息——一两个例子会很好(例如一些样本数据和你希望看到它排序的不同方式......排序后的样子等) .这将有助于我们更好地了解您的需求,然后我们可以提出建议。
  • @TopperH - 完成。很抱歉没有从一开始就添加它。
  • @Taryn East - 已添加
  • 任意...所以您有一组已知的要以特定的硬编码方式排序的东西?或者你想随机排序?如果是前者,那么您可以在表中添加一个名为sort_order 的列,并将硬编码的排序顺序存储在每个项目上......然后根据后者进行排序,然后查看数据库列中的随机排序

标签: ruby-on-rails haml


【解决方案1】:

假设你想硬编码一个特定的排序顺序,我见过的最常见的解决方法是:

a) 将整数 sort_order 列添加到模型的数据库表中

b) 使用项目的排序顺序填充它(例如 x 的值为 1,d 的值为 2 等等) - 如果您希望它可部署到生产服务器,您可以通过迁移来完成

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多