- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
22-6ren">
如何将 jsonb 订单查询传递到 Active Admin 列的 sortable:
选项?
我的模型结构如下:
# User Model
class User < ActiveRecord::Base
has_one :level
end
# Level Model
class Level < ActiveRecord::Base
belongs_to :user
end
# Level Migration
create_table "levels", force: :cascade do |t|
t.integer "user_id"
t.jsonb "ranked_scores"
end
:ranked_score
json 结构是:
# level.ranked_scores
{"stage_1"=>111, "stage_2"=>222, "stage_3"=>333}
我尝试使用 Level
的 :ranked_scores
属性对 User
进行排序,如下所示:
# app/admin/user.rb
ActiveAdmin.register User do
controller do
def scoped_collection
end_of_association_chain.includes(:level)
end
end
index do
column "Stage 1 Score", sortable: "level.ranked_scores -> 'stage_1'" do |user|
user.level.ranked_scores['stage_1']
end
end
end
ActiveAdmin.register Level do
belongs_to :user
end
生成的用于对列进行排序的 url 是
http://localhost:3000/admin?order=levels.ranked_scores%5B%27stage_1%27%5D_desc
但是 stage_1
的列未按降序排序。
对这里出了什么问题有什么想法吗?
最佳答案
您应该在 admin/user.rb
配置中做 2 处小改动,使其可以正常工作。
#1 ->
周围有空格,应将其删除以使 ActiveAdmin 满意。
这里的问题是由ActiveAdmin的sort validation regexp引起的,这与您的可排序选项不匹配。删除 ->
周围的空格可以被视为 ActiveAdmin 错误的解决方法。
#2 Level
的表应该被引用为 levels
,而不是 level
。
最后我们有:
column "Stage 1 Score", sortable: "levels.ranked_scores->'stage_1'"
你得到了你想要的。
->>
运算符的注意事项还有另一个 Postgres 运算符,->>
,它与 ->
非常相似。 See here .
两者的区别在于,->>
总是返回文本值(字符串化json),而->
可以返回json对象。在您的示例中,它们的用法完全相同,因为排名分数是数字。
但在一般情况下,您可能还需要 ->>
运算符。不幸的是,ActiveAdmin 仍未解决问题 #3173 和 #3085,即 @bigsolom mentions in his reply .所以您不能在当前版本的 ActiveAdmin 中使用 ->>
运算符。
不幸的是,我想不出任何解决方法,就像我们对 ->
运算符所做的那样。
您还可以使用 hack 来启用此运算符。需要在ActiveAdmin的源代码中加入2个字符。
您需要更改此 line of code到以下一个:
clause =~ /^([\w\_\.]+)(->>?'\w+')?_(desc|asc)$/
我们在中间添加了 >?
。 2 个字符,如所 promise 的那样。
关于ruby-on-rails - 事件管理员 : how to add sortable on nested model's json column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32026203/
我正在使用 jquery-ui sortable 并且我有一个 sortable inside other!重点是当我尝试使用 sortstop 函数时,parent sortable 也会运行(!请
我正在使用来自 Google CDN 的 jQuery 1.7 和 jQuery UI 1.8(因此我拥有最新版本)。 我的页面上有两个元素,一个标题导航和一个内容区域,其中包含与每个标题列表项相对应
我正在努力使以下工作正常进行: My Playlist drag div
我有以下 jQuery 代码: var isOk = true; $('#edit').click(function () { if (isOk) { $('table tbo
我正在使用 Rubaxas Sortable.js 来对列表进行排序。 我的问题是我只能将“.group_container”移动到主支架的底部,而不能移动到其他列表之间。 这是一个 jsFiddle
我正在使用 jQuery UI“可排序”插件来选择和排序项目。 我将插件设置为有两个列表,一个用于“可用”项目,第二个用于“选定”项目。 插件按预期工作,我可以将项目从一个列表移动到另一个列表。 但是
我正在使用 jQuery UI“可排序”插件来选择和排序项目。 我将插件设置为有两个列表,一个用于“可用”项目,第二个用于“选定”项目。 插件按预期工作,我可以将项目从一个列表移动到另一个列表。 但是
我正在 ui-sortable 的帮助下创建一个带有可拖动行的表格
这就是我要实现的目标:我有两个可排序列表,右边的列表连接到左边的列表。我希望能够从左侧列表中删除项目,方法是将它们放在垃圾箱中。我正在尝试将垃圾箱实现为 Droppable,但在 Droppable
考虑以下HTML i1 i2 i3 i4 i5 i6 i7 i8 我正在 sortcontaine
有人在http://jsfiddle.net/hKYWr/上整理了一个很好的 fiddle 。关于使用 angular-ui 和 jqueryui sortable 来获得良好的可排序效果。 如何在两
我正在使用这个小示例测试 Sortable.js 列表。我有一个要从中拖动的元素列表,以及另一个通过删除元素来存储它们的列表。 注意:Sortable.js 与 JQuery-ui sortable
stackoverflow上的相关问题0和 1 .JSFiddle:http://jsfiddle.net/ashugupt/hpncs/1/ 也试过如下排序: $(".fields").sortab
当使用 StofDoctrineExtensions(这是 Gedmo Doctrine Extensions 的 Symfony2 端口)可排序行为时,我不断收到此错误: This reposito
我正在尝试对列表进行排序,我从数据库中获取元素但是... Error: cannot call methods on sortable prior to initialization; attempt
我有一个容器,里面有 2 个 div: 一个是向左浮动的小的固定宽度左侧 div(类似于侧边菜单)。 第二个是流动的 div,它也向左浮动(以便能够与固定的 div 一起堆叠)。 第二个 div 具有
我已经将 sortable 和 jquery 引用导入到我的 html 中,但是,它说 Uncaught TypeError: $(...).sortable is not a function 和
我有一个 JQuery 可排序(1.7.1 可以根据需要更改)列表,如下所示: 1 2 3 4 5 第二个项目被锁定,因此如果尝试将项目 5 移动到插槽 2 中,它将进入插槽
我有两个可排序的列表,其中包含工作订单。第二个列表是Route,而第一个列表只是尚未添加到Route 列表中的所有工单的列表。这个想法是,用户按照特定顺序将工作订单拖到Route中,重新排列工作订单以
我正在使用 jqueryui 可排序小部件。我需要获取当前拖动元素的数据属性。 $(this).data('attribute_name') 在这里不起作用。我也尝试过其他一些方法,但没有得到正确的结
我是一名优秀的程序员,十分优秀!