ruby-on-rails – 使用构建器生成XML时的Extra

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 使用构建器生成XML时的Extra前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图使用Builder生成KML.我知道他们是一些选择,以帮助这一点,但我将会做一些2.2特定的事情,不支持我所看到的KML宝石,一般希望能够完成这一杠杆只是一个 XML框架.

在渲染我的kml / xml时,我在文件末尾获得一个标签.我强烈地怀疑我设置了我的Builder对象,或者如何渲染输出,我错过了一些基本的东西.以下是一个简单的例子来演示这个问题:

def kml2dot2
  @site = Site.find(params[:id])
  xml = Builder::XmlMarkup.new(:indent => 2)
  xml.instruct!
  xml.kml("xmlns" => "http://www.opengis.net/kml/2.2") {
    xml.Placemark do
      xml.name @site.mapNameFull
      xml.Point do
        xml.coordinates @site.lat.to_s + "," + @site.lng.to_s + ",0"
      end
    end
  }
  render :text => xml,:type=>"text/kml"

end

生产:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Placemark>
    <name>Seattle City Hall</name>
    <Point>
      <coordinates>47.6040746,-122.33005,0</coordinates>
    </Point>
  </Placemark>
</kml>
<to_s/>

我试图理解如何避免< to_s />被包括在内,我在做错了什么.感谢任何见解.

解决方法

您不需要初始化XML构建器对象.只需使用集成的构建器模板处理程序.

>调用模板kml2dot2.xml.builder
>直接在视图中编写代码

def kml2dot2
  @site = Site.find(params[:id])
end

# kml2dot2.xml.builder
xml.kml("xmlns" => "http:// www.opengis.net/kml/2.2") do
  xml.Placemark do
    xml.name @site.mapNameFull
    xml.Point do
       xml.coordinates "#{@site.lat},#{@site.lng},0"
    end
  end
end

猜你在找的Ruby相关文章