我有一个输出XML字符串的函数:
<expensesAC>
<cashflow>
<month>6</month>
<cash>300</cash>
<projected>null</projected>
</cashflow>
<cashflow>
<month>6</month>
<cash>300</cash>
<projected>null</projected>
</cashflow>
<cashflow>
<month>6</month>
<cash>300</cash>
<projected>null</projected>
</cashflow>
</expensesAC>我有一个名为genxml.xml.erb的视图,并重定向到mysite.com:3000/genxml.xml。
我需要它,因为flex需要传递一个XML文件。然而,我得到的是:
<body>
<expensesAC>
<cashflow>
<month>6</month>
<cash>300</cash>
<projected>null</projected>
</cashflow>
</expensesAC>
<cashflow>
<month>6</month>
<cash>300</cash>
<projected>null</projected>
</cashflow>
<cashflow>
<month>6</month>
<cash>300</cash>
<projected>null</projected>
</cashflow>
</body>因此,基本上,Rails强制我的XML字符串为HTML。
如何使用我的字符串生成动态XML页面?或者,如何将XML字符串转换为动态生成的XML页面?我不想创建静态文件,这些文件需要动态生成,因为XML集中的数据将是每个用户的私有信息。
发布于 2009-07-02 20:06:06
如果想用Rails编写XML文件,可能需要从ERB切换到Builder template handler。
如果使用的是渲染对象,则在指定渲染选项时也可以使用handy :xml选项。
def index
@records = Model.all
respond_to do |format|
format.html
format.xml { render :xml => @records }
end
end发布于 2010-08-13 15:23:31
我现在做的就是你想要的,没有问题。ERB生成XML肯定是最方便的方法之一,特别是在输出主要是XML模板的情况下。它还使得使用集合呈现部分参数等巧妙的技巧成为可能。
但我知道这不能正常工作(必须使用builders),但是我可以看到,至少从Rails 2.3.5开始,ERB方法似乎工作得很好。
例如:
class MyController < ApplicationController
def genxml
respond_to do |format|
format.xml
end
end
end然后genxml.xml.erb会生成一个有效的XML文件,您甚至可以这样做:
<expensesAC>
<%= render :partial => 'expenses/cashflow', :collection => @expenses-%>
</expensesAC>其中expenses/_cashflow.xml.erb类似于:
<cashflow>
<month><%= cashflow.month %></month>
<cash><%= cashflow.cash %></cash>
<projected><%= cashflow.projected %></projected>
</cashflow>注意:在您的示例中,交错的和可能表示在XML生成逻辑中潜伏着另一个问题。
发布于 2009-07-02 20:04:00
在控制器中,您需要将内容呈现为xml。类似于:
def show
respond_to do |format|
format.html
format.xml { render :xml => my_function_that_outputs_xml }
end
endhttps://stackoverflow.com/questions/1076353
复制相似问题