Ruby on Rails XML

0 xml ruby-on-rails

我正在寻找创建一个生成XML而不是HTML的Rails应用程序.我该怎么做呢?

ede*_*ill 5

你有三个选择.

选项1是显式呈现自动生成的XML.

render :xml => @object
Run Code Online (Sandbox Code Playgroud)

它将为您调用@ object.to_xml.您可以使用选项调整输出:

render :xml => @object.to_xml(:except => [:private1, :private2], :include => [:associated_class])
Run Code Online (Sandbox Code Playgroud)

这非常简单快捷.如果您不需要严格控制输出,它将非常有效.XML表示在控制器中被控制而不是视图,这有点凌乱,但只要你没有花哨,就不会太糟糕.

选项2是创建名为.xml.erb的模板,而不是正常的.html.erb.这些只是XML文件,其中包含正常的ERB标记.如果请求的末尾是带有.xml的URL,则默认行为(使用控制器中的常规脚手架)将显示这些模板而不是HTML模板.经常支架有一个块,如:

respond_to do |format|
  format.html # show.html.erb
  format.xml { render :xml => @object.to_xml }
end
Run Code Online (Sandbox Code Playgroud)

在这种情况下(假设您也想要允许HTML),您需要删除format.xml行上的{}块,以便它回退到默认模板.

选项3是编写自己的对象 - > XML映射,使用像Builder这样的东西(非常光滑并且包含在Rails中).突然间,你的模型正在担心它的观点.

我建议做选项1,直到你开始遇到麻烦(有时看似良性的改变会导致XML输出改变 - 可能重新排序标签)然后切换到选项2.拥有那些XML文件使得它非常清楚到底是什么正在显示,就像拥有HTML视图文件一样.选项3有效,但您将逻辑(模型的其余部分)与演示混合在一起.