你有三个选择.
选项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有效,但您将逻辑(模型的其余部分)与演示混合在一起.
| 归档时间: |
|
| 查看次数: |
1310 次 |
| 最近记录: |