在ActiveAdmin中很好地显示XML字段?

时间:2017-02-13 09:40:35

标签: xml activeadmin

我的一个表字段包含保存为字符串的XML数据。我想以可读的方式在ActiveAdmin中显示它。我找到了一种方法可以做到这一点,但这是令人难以置信的hackish。

以下是我的代码的相关部分:

ActiveAdmin.register SyncLog do
  show do
    attributes_table do
      row :request do |log|
        if log.request
          xml_string = Nokogiri::XML(log.request, &:noblanks).to_xml
          "<pre>#{xml_string.gsub(/</, '&lt;').gsub(/>/, '&gt;')}</pre>".html_safe
        end
      end
    end
  end
end

数据库中的字符串可能是:

"<foo>\n<bar />\n</foo>"

我希望将其显示为:

<foo>
   <bar/>
</foo>

我怎样才能以一种好的方式实现这一目标?

1 个答案:

答案 0 :(得分:1)

这是装饰者使用候选人。 https://github.com/activeadmin/activeadmin/blob/master/docs/11-decorators.md

这样的事可能有效

class SyncLogDecorator
   def request
    xml_string  = Nokogiri::XML(model.request, &:noblanks).to_xml
    "<pre>#{xml_string.gsub(/</, '&lt;').gsub(/>/, '&gt;')}</pre>".html_safe
   end
end


ActiveAdmin.register SyncLog do
  decorate_with SyncLogDecorator
end