我在Rails应用中渲染xml时遇到问题。我按照here的说明操作,这是我的控制器:
...
respond_to do |format|
format.xml { render :xml => @cases }
end
在我看来:
xml.instruct!
xml.cases do
@cases.each do |c|
xml.case do
xml.title c.case_number
end
end
end
然而在我的回答中,我得到的只是:
<?xml version="1.0" encoding="UTF-8"?>
<nil-classes type="array"/>
我之前从未在Rails中使用xml,所以我有点困惑。我的控制器结构是这样的:
app/controllers
app/controllers/shared
app/controllers/api
app/controllers/shared
中的控制器是我保留大部分逻辑的地方,所以在app/controllers/api
中,我像这样引用共享控制器:
class Api::CampaignsController < Shared::CampaignsController
protect_from_forgery with: :null_session
before_action :authenticate
end
目前,我的xml模板位于此处:views/campaigns/method_in_my_controller.xml.builder
但是当我在此处有一个查看文件时,我得到了类似的结果(xml中没有数据)views/shared/campaigns/method_in_my_controller.xml.builder
我错过了什么?
答案 0 :(得分:6)
删除
import { Observable } from 'rxjs/Rx';
import 'rxjs/Rx';
写下
respond_to do |format|
format.xml { render :xml => @cases }
end
您不需要查看xml.builder。去掉它。
尝试在控制台中调用render :xml => @cases
。我知道to_xml适用于哈希。