如何在Rails 4中呈现xml

时间:2016-11-18 07:45:40

标签: ruby-on-rails ruby xml ruby-on-rails-4

我在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

我错过了什么?

1 个答案:

答案 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适用于哈希。