小编dim*_*rvp的帖子

ActiveAdmin:按子协会的属性排序

我有这些对象:

class District < ActiveRecord::Base
  belongs_to :city
end
class City < ActiveRecord::Base
  has_many :districts
end
Run Code Online (Sandbox Code Playgroud)

我想做的(迄今为止无法做到)是:CityDistrict索引中有一列,该列应该是可排序的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'- 没有运气.尝试了一堆其他愚蠢的东西,生气了,决定谦卑地寻求帮助.

谁能指出我正确的方向?谢谢你的时间.

ruby-on-rails-3 activeadmin

12
推荐指数
3
解决办法
7753
查看次数

我需要一个工具来解析Lua表,最好用Ruby或Java

我需要一个工具来解析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)

ruby java lua parsing lua-table

4
推荐指数
1
解决办法
4256
查看次数

ActiveAdmin,CanCan,Rolify - 无法有条件地禁用过滤器

到目前为止,这个组合设置中的大部分内容都运行良好.但是,当我尝试有条件地禁用过滤器时,它们只是始终启用.我的场景是(或多或少)我想给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)

ruby ruby-on-rails-3 activeadmin

1
推荐指数
1
解决办法
1575
查看次数

标签 统计

activeadmin ×2

ruby ×2

ruby-on-rails-3 ×2

java ×1

lua ×1

lua-table ×1

parsing ×1