2

我最近从 Ruby 1.8.6 和 Rails 2.3.4 升级到 Ruby 1.9 和 Rails 3.0.3。

我有以下控制器:

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 方法”时,我得到以下信息:

开始为 127.0.0获取“/load_progress.xml ”。ChartController#load_progress 处理为HTML Completed 406 Not Acceptable in 251ms

我也尝试过将 respond_to 块更改为

respond_with chart

但我得到了同样的回应。我已阅读有关新的 respond_with 格式的所有新 Rails 文档,但我似乎无法引出 XML 响应。我非常希望有人有一些想法。

4

2 回答 2

3

我遇到了同样的问题,以下代码段对我有用:

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

406 的发生可能有多种原因——通常是当使用错误的 MIME 类型时——但根据上述创建 XML 响应时的rails 指南,所有内容都将由 rails 正确填写。

上述代码段有一个缺点。它将列出模型的每个属性。

在您的示例中,我不确定chart变量是否已初始化/可见。

于 2011-05-09T07:31:22.033 回答
0

你在做什么看起来是对的。您使用的是 Ruby 1.9.2 吗?我知道 1.9.0 有问题,但我不确定它会解释这一点。

于 2011-01-14T21:12:20.597 回答