我有一个要以xml格式显示的Song模型。
我的控制器是
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 :(得分:1)
我设法通过两种方式解决了这个问题:
1)将gem 'activemodel-serializers-xml'
添加到Gemfile
中。之后,@songs.to_xml
将按预期工作(它将序列化所有模型字段)
2)如果您不想安装此gem,可以执行@songs.map(&:as_json).to_xml
第一种方法似乎是更好的解决方案