我有这些对象:
class District < ActiveRecord::Base
belongs_to :city
end
class City < ActiveRecord::Base
has_many :districts
end
Run Code Online (Sandbox Code Playgroud)
我想做的(迄今为止无法做到)是:City在District索引中有一列,该列应该是可排序的City.name.
在没有崩溃ActiveAdmin的情况下我能做的最近的事情是:
index do
column City.human_name(:count => :other), :city, :sortable => :city_id
end
Run Code Online (Sandbox Code Playgroud)
这当然不够好; 我不想对外键的整数值进行排序.
尝试过的东西:sortable => 'city.name',给出了一个错误.甚至试图像你在"纯粹的"Rails上那样做 - :joins => :cities, :sortable => 'city.name'- 没有运气.尝试了一堆其他愚蠢的东西,生气了,决定谦卑地寻求帮助.
谁能指出我正确的方向?谢谢你的时间.
我需要一个工具来解析Lua表表达式.如果所有其他方法都失败了,我最终只会编写一个小的Lua模块来将表转换为XML,但目前我对Ruby库感兴趣,但是如果不这样做,我会接受任何语言的工具,前提是我可以看看它的来源.
这是一个示例代码段(它是一个WoW插件输出):
CT_RaidTracker_RaidLog = {
{
["PlayerInfos"] = {
["Nyim"] = {
["race"] = "Orc",
["guild"] = "Excubitores Noctae",
["sex"] = 2,
["class"] = "HUNTER",
["level"] = 70,
},
["Zyrn"] = {
["race"] = "BloodElf",
["guild"] = "Excubitores Noctae",
["sex"] = 2,
["class"] = "WARLOCK",
["level"] = 70,
},
...
Run Code Online (Sandbox Code Playgroud)
基本思想是嵌套关联数组.任何帮助或指针都将被检查,任何想法都值得赞赏.
EDIT #1
由于争议,让我澄清我尝试了什么.我补充了其中一个参与者提供的字符串/正则表达式替换链,如下所示:
str.gsub(/--.+$/, "").gsub("=", ":").gsub(/[\[\]]/,"").gsub('" :','":').gsub(/,\s*\n(\s*)}/, "\n\\1}")
Run Code Online (Sandbox Code Playgroud)
我(1)添加了Lua注释的删除,(2)替换了一个正则表达式替换器:当你有一个对象/数组中的最后一个元素时,它后面仍然有一个逗号,所以必须覆盖并且正确删除逗号.
你注意到双开口花括号吗?JSON不喜欢拥有匿名对象.它看起来像这样:
"xxx" = {
{
["aaa"} = {
["bbb"] = {
"ccc" = 7
"ddd" = "a string" …Run Code Online (Sandbox Code Playgroud) 到目前为止,这个组合设置中的大部分内容都运行良好.但是,当我尝试有条件地禁用过滤器时,它们只是始终启用.我的场景是(或多或少)我想给Restaurant所有者(AdminUser带有角色:restaurateur)部分访问:他们只能编辑他们自己的餐厅,我也想隐藏他们的一些字段.这有效.但禁用过滤器却没有.让我详细说明:
# app/admin/restaurants.rb
batch_action :activate, :if => proc { can? :activate, Restaurant } do |list|
#...
end
controller do
def current_ability
@current_ability ||= Ability.new(current_admin_user)
end
end
index do
...
column :city if can? :manage, Restaurant # This works well.
end
filter :city, :if => proc { can? :manage, Restaurant } # This is always there.
Run Code Online (Sandbox Code Playgroud)
的Ability:
# app/models/ability.rb
if user.has_role? :admin
can :manage, :all
elsif user.has_role? :restaurateur
cannot :manage, Restaurant
Run Code Online (Sandbox Code Playgroud)
这是我在Rails控制台中看到的内容:
admin …Run Code Online (Sandbox Code Playgroud)