ActiveAdmin仪表板中的格式化问题

时间:2015-06-17 02:26:31

标签: ruby-on-rails ruby rubygems activeadmin

我在使用ActiveAdmin将正确的信息提取到仪表板列时遇到问题。如果有人能帮助我解决这个问题,我将不胜感激。

我遇到的问题是使用我正在显示的当前记录保留关联类的数据(下面的第6行)。

这是我创建的专栏:

  column do
    panel "Recent Beacons" do
      table_for Beacon.limit(20) do
        column("Mac address") { |b| link_to b.mac_address, admin_beacon_path(b) }
        column "Last seen", :updated_at
        column("House") { |b| link_to b.root_house, admin_house_path(b.root_house.id) }
        column("Status") { |b| b.online? ? status_tag('Online', :green) : status_tag('Offline', :red) }
      end
    end
  end

使用binding.pry我能够执行b.meters.pop.circuit.root并返回我正在寻找的正确值。但是,ActiveAdmin不喜欢这个以及以下undefined method circuit for nil:NilClass的页面错误。尝试清理代码,我写了一个root_house方法。

  def root_house
    meters.pop.circuit.root
  end

ActiveAdmin让我有点困惑,非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个肮脏的解决方案,重构如你所愿:

  def root_house
    if meters && meters.pop && meters.pop.circuit
      meters.pop.circuit.root
    else
    'object is not present'
    end
  end

所以如果meters.pop.circuit.rootmetersmeters.pop不是零,我只会打电话给meters.pop.ciruit

Google null对象模式和Demeter ruby​​法则为更清晰的解决方案,也可以使用delegate方法,this可能会有所帮助。