Контроллер Rails обрабатывает как HTML вместо XML - PullRequest
2 голосов
/ 14 января 2011

Я недавно обновил 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, я получаю следующее:

Запущен GET "/load_progress.xml" для 127.0.0.Обработка ChartController # load_progress как HTML Выполнено 406 Недопустимо в 251мс

Я также пытался изменить блок response_to на

respond_with chart

Но я получаю тот же ответ.Я прочитал всю новую документацию по Rails с новым форматом response_with, но, похоже, не могу получить ответ XML.Я отчаянно надеюсь, что у кого-то есть идеи.

Ответы [ 2 ]

3 голосов
/ 09 мая 2011

У меня возникла та же проблема, и у меня сработал следующий фрагмент:

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

406 может произойти по нескольким причинам - обычно, когда используются неправильные типы MIME - но на основе направляющих рельсов при создании ответа XML, как описано выше, все будет правильно заполнено рельсами.

У приведенного выше фрагмента есть один недостаток. В нем будут перечислены все атрибуты вашей модели.

В вашем примере я не уверен, инициализирована / видима переменная chart или нет.

0 голосов
/ 15 января 2011

То, что вы делаете, выглядит правильно. Вы используете Ruby 1.9.2? Я знаю, что у 1.9.0 есть проблемы, но я не уверен, что это могло бы объяснить это.

...