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
我错过了什么?
去掉
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适用于哈希.