Rails,渲染to_xml不显示模型的字段

时间:2019-07-18 21:59:15

标签: ruby-on-rails

我有一个要以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问题,但似乎没有一个“地址”结果。

谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我设法通过两种方式解决了这个问题:

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

2)如果您不想安装此gem,可以执行@songs.map(&:as_json).to_xml

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