我的一个表字段包含保存为字符串的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(/</, '<').gsub(/>/, '>')}</pre>".html_safe
end
end
end
end
end
数据库中的字符串可能是:
"<foo>\n<bar />\n</foo>"
我希望将其显示为:
<foo>
<bar/>
</foo>
我怎样才能以一种好的方式实现这一目标?
答案 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(/</, '<').gsub(/>/, '>')}</pre>".html_safe
end
end
ActiveAdmin.register SyncLog do
decorate_with SyncLogDecorator
end