【问题标题】:Formatting issue in ActiveAdmin dashboardActiveAdmin 仪表板中的格式问题
【发布时间】:2015-06-17 02:26:31
【问题描述】:

我在使用 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 让我有点困惑,非常感谢任何帮助。

谢谢!

【问题讨论】:

  • 你的 root_house 方法中的 meters 是什么?错误“nil:NilClass 的未定义方法电路”表明 meters 是 nil。
  • 这很有帮助.. 谢谢。我的思路是电路返回为零。 Meters 是信标指向的另一种模型。

标签: ruby-on-rails ruby rubygems activeadmin


【解决方案1】:

这是一个肮脏的修复,你可以重构:

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

所以如果metersmeters.popmeters.pop.ciruit 不为零,我只会打电话给meters.pop.circuit.root

谷歌空对象模式和 Demeter ruby​​ 法则以获得更清洁的解决方案,您也可以使用 delegate 方法,this 可能会有所帮助。

【讨论】:

  • 这就像一个冠军!我希望我有一个以上的支持!非常感谢您指出我的“代表”方向。
  • 很高兴能帮上忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 2019-05-22
相关资源
最近更新 更多