Ruby on rails RubyonRailsXML

Ruby on rails RubyonRailsXML,ruby-on-rails,xml,Ruby On Rails,Xml,我希望创建一个生成XML而不是HTML的Rails应用程序。如何做到这一点?您可以编写XML而不是HTML。Rails并不特别关心它提供什么服务 您可以编写XML而不是HTML。Rails并不特别关心它提供什么服务 这里有: 希望它有用 这里有: 希望它有用 您可以使用Ruby库,也可以使用功能。您可以使用Ruby库,也可以使用功能。您有三个选项 选项1是显式呈现自动生成的XML render :xml => @object 它将为您调用@object.to_xml。您可以使用以下选

我希望创建一个生成XML而不是HTML的Rails应用程序。如何做到这一点?

您可以编写XML而不是HTML。Rails并不特别关心它提供什么服务

您可以编写XML而不是HTML。Rails并不特别关心它提供什么服务

这里有:

希望它有用

这里有:


希望它有用

您可以使用Ruby库,也可以使用功能。

您可以使用Ruby库,也可以使用功能。

您有三个选项

选项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文件。如果请求的URL末尾带有.xml,那么默认行为(在控制器中使用普通支架)是显示这些模板,而不是HTML模板。脚手架通常有块,如:

respond_to do |format|
  format.html # show.html.erb
  format.xml { render :xml => @object.to_xml }
end
在这种情况下(假设您也希望允许HTML),您希望删除format.xml行上的{}块,使其返回到默认模板

选项3是编写自己的对象->XML映射,使用类似于Builder的东西(非常灵活,包含在Rails中)。突然你的模型开始担心它的观点


我建议执行选项1,直到您开始遇到麻烦(有时看似良性的更改会导致XML输出发生更改,可能会重新排序标记),然后切换到选项2。有了这些XML文件,就可以非常清楚地看到显示的内容,就像有HTML视图文件一样。选项3起作用,但您将逻辑(模型的其余部分)与表示混合在一起。

您有三个选项

选项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文件。如果请求的URL末尾带有.xml,那么默认行为(在控制器中使用普通支架)是显示这些模板,而不是HTML模板。脚手架通常有块,如:

respond_to do |format|
  format.html # show.html.erb
  format.xml { render :xml => @object.to_xml }
end
在这种情况下(假设您也希望允许HTML),您希望删除format.xml行上的{}块,使其返回到默认模板

选项3是编写自己的对象->XML映射,使用类似于Builder的东西(非常灵活,包含在Rails中)。突然你的模型开始担心它的观点

我建议执行选项1,直到您开始遇到麻烦(有时看似良性的更改会导致XML输出发生更改,可能会重新排序标记),然后切换到选项2。有了这些XML文件,就可以非常清楚地看到显示的内容,就像有HTML视图文件一样。选项3可以工作,但您将逻辑(模型的其余部分)与表示混合在一起