2009-12-21 204 views

回答

-1

您编写XML而不是HTML。 Rails并不特别关心它所服务的内容。

5

您有三种选择。

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

render :xml => @object 

这将为您调用@ object.to_xml。你可以调整输出的选项:

render :xml => @object.to_xml(:except => [:private1, :private2], :include => [:associated_class]) 

这是非常快速和容易。如果您不需要严格控制输出,它将工作得很好。 XML表示在控制器中被控制,而不是在视图中,这看起来有些杂乱,但只要你不喜欢就不会太糟糕。

选项2用于创建名为.xml.erb而不是普通的.html.erb的模板。这些只是正常ERB标记的XML文件。如果请求在其末尾带有.xml的URL,默认行为(在控制器中使用普通脚手架)是显示这些模板而不是HTML)。通常支架具有像块:

respond_to do |format| 
    format.html # show.html.erb 
    format.xml { render :xml => @object.to_xml } 
end 

在这种情况下(假设你要允许HTML以及)你要删除的format.xml线{}块所以它回落到默认模板。

选项3是使用类似Builder(这非常非常光滑,并包含在Rails中)编写自己的对象 - > XML映射。突然你的模型担心它的观点。

我建议你做选项1,直到你开始遇到麻烦为止(有时看起来良性的改变会导致XML输出改变 - 也许重新排序标签),然后切换到选项2。它非常清楚显示的内容,就像具有HTML视图文件一样。选项3的作品,但你混合逻辑(你的模型的其余部分)与演示文稿。