代码之家  ›  专栏  ›  技术社区  ›  flobacca

Rails,呈现为不显示模型字段的\u xml

  •  0
  • flobacca  · 技术社区  · 5 年前

    我有一个歌曲模型,我想以xml格式显示。

    我的控制器是

    class SongsController < ApplicationController
      def index
        @songs = Song.all
        respond_to do |format|
          format.html
          format.xml {render :xml =>  @songs.to_xml}
        end
      end
    end
    

    我的结果是

    <songs type="array">
    <song type="Song">#<Song:0x00007f8ce441b810></song>
    <song type="Song">#<Song:0x00007f8ce441b428></song>
    </songs>
    

    我想在歌曲里面的领域显示,像这样。

    <songs type="array">
      <song>
        <filename>take_to_the_sky_loveshadow</filename>
        <id type="integer">19</id>
        <link-to-new-work-license>http://creativecommons.org/licenses/by/3.0/</link-to-new-work-license>
      ...
    

    在我看来,歌曲地址显示出来了,我不知道为什么。我看过很多关于xml格式的Stackoverflow问题,但似乎没有一个有这样的“地址”结果。

    谢谢你的帮助。

    0 回复  |  直到 5 年前
        1
  •  2
  •   Stanislav Zaleski    5 年前

    我设法用两种方法解决了这个问题:

    1) 添加 gem 'activemodel-serializers-xml' Gemfile . 之后 @songs.to_xml 将按预期工作(它将序列化所有模型字段)

    @songs.map(&:as_json).to_xml

    第一种方法似乎是更好的解决办法