如何在Rails 4中呈现xml

Wag*_*sUK 0 ruby xml ruby-on-rails ruby-on-rails-4

我在Rails应用程序中渲染xml时遇到问题.我按照这里的说明操作,这是我的控制器:

...
respond_to do |format|
  format.xml { render :xml => @cases }
end
Run Code Online (Sandbox Code Playgroud)

在我看来:

xml.instruct!
xml.cases do
  @cases.each do |c|
    xml.case do
      xml.title c.case_number
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

然而在我的回答中,我得到的只是:

<?xml version="1.0" encoding="UTF-8"?>
<nil-classes type="array"/>
Run Code Online (Sandbox Code Playgroud)

我以前从未使用过Rails中的xml,所以我有点困惑.我的控制器结构是这样的:

app/controllers
app/controllers/shared
app/controllers/api
Run Code Online (Sandbox Code Playgroud)

控制器app/controllers/shared是我保留大部分逻辑的地方,所以我在这里app/controllers/api引用共享控制器,如下所示:

class Api::CampaignsController < Shared::CampaignsController
  protect_from_forgery with: :null_session
  before_action :authenticate
end
Run Code Online (Sandbox Code Playgroud)

目前,我的xml模板位于此处:views/campaigns/method_in_my_controller.xml.builder但是当我在此处有一个视图文件时,我得到了类似的结果(xml中没有数据)views/shared/campaigns/method_in_my_controller.xml.builder

我错过了什么?

Mic*_*lov 6

去掉

respond_to do |format| 
    format.xml { render :xml => @cases } 
end 
Run Code Online (Sandbox Code Playgroud)

和写

render :xml => @cases
Run Code Online (Sandbox Code Playgroud)

您不需要查看xml.builder.去掉它.尝试@cases.to_xml在控制台中调用.我知道to_xml适用于哈希.