2017-02-13 8 views
1

テーブルフィールドの1つに、文字列として保存されたXMLデータが含まれています。私はそれをActiveAdminに読み込み可能な形で表示したい。私はこれを行う方法を見つけましたが、それは信じられないほどハックされています。ここでXMLフィールドをActiveAdminにうまく表示しますか?

は、私のコードの関連部分です:

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 

DB内の文字列は次のようになります。

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

そして、私のようにそれを表示したい:

<foo> 
    <bar/> 
</foo> 

どのように私はこれを良い方法で達成することができますか?

答えて

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 
関連する問題