2011-01-14 64 views
2

我最近從Ruby 1.8.6和Rails 2.3.4升級到Ruby 1.9和Rails 3.0.3。將Rails控制器處理爲HTML而不是XML

我有以下控制器:

class ChartController < ApplicationController 

    before_filter :login_required 

    respond_to :html, :xml 

    def load_progress 

    chart.add(:series, "Memorized", y_memorized) 
    chart.add(:series, "Learning", y_learning ) 
    chart.add(:series, "Mins/Day", y_time  ) 
    chart.add(:user_data, :secondary_y_interval, time_axis_interval) 

    respond_to do |fmt| 
     fmt.xml { render :xml => chart.to_xml } 
    end 

    # Also tried 
    # respond_with chart 

    end 
end 

然而,當我稱之爲 'load_progress方法' 我得到以下幾點:

入門使用 「/ load_progress XML。」 爲127.0.0。 。 處理由ChartController#load_progress爲HTML 完成406無法接受在251ms

我也試圖改變respond_to代碼塊

respond_with chart 

,但我得到了同樣的答覆。我已經閱讀了關於新的respond_with格式的所有新Rails文檔,但我似乎無法引發XML響應。我絕望地希望有人有一些想法。

回答

3

我有同樣的問題,下面的代碼片段工作對我來說:

respond_to :xml 
    def list 
    @items = Item.all 
    render :xml => @items 
    end 

406 can happen for several reasons - 通常當一個人使用錯誤的MIME類型 - ,但是基於rails guides時,按照上述方法創建一個XML響應,一切都將通過鐵軌正確填寫。

上述代碼片段有一個缺點。它會列出你模型的每個屬性。

在您的示例中,我不確定chart變量是否已初始化/可見。

+3

此外,您可能需要在您的routes.rb中使用適當的控制器:format =>:xml – Zsolt 2011-05-09 09:28:41

0

你在做什麼看起來不錯。你在使用Ruby 1.9.2嗎?我知道1.9.0有問題,但我不確定它會解釋這一點。

+0

是的,我在Ruby 1.9.2上。很少被Rails困惑。 – Andy 2011-01-14 22:03:25

相關問題