2016-11-18 88 views
0

我在Rails應用中呈現xml時遇到問題。我下面從here的說明,這裏是我的控制器:如何在Rails 4中呈現xml

... 
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

您確定在傳遞渲染之前填入了「@個案」嗎? – ReggieB

+0

是的,這是...我在控制檯上運行代碼,我可以清楚地看到'@ cases'中的內容。 – WagnerMatosUK

+1

我認爲值得檢查,因爲它總是值得首先嚐試簡單的事情。 – ReggieB

回答

3

刪除

respond_to do |format| 
    format.xml { render :xml => @cases } 
end 

而寫

render :xml => @cases 

你不需要視圖xml.builder。去掉它。 嘗試在控制檯中呼叫@cases.to_xml。我知道to_xml適用於哈希。

+0

但是,如果我刪除視圖,我得到一個'模板是缺少錯誤'。 '@ cases.to_xml'似乎工作正常。我只是不明白它在視圖中... – WagnerMatosUK

+0

如果刪除'respond_to do | format | format.xml {render:xml => @cases} end'並寫入'render:xml => @ cases' –

+0

其實它確實有效。我的代碼中有一個錯誤導致我拋棄。謝謝! – WagnerMatosUK