2011-01-14 7 views
2

Ich habe kürzlich von Ruby 1.8.6 und Rails 2.3.4 auf Ruby 1.9 und Rails 3.0.3 aktualisiert.Rails Controller Verarbeitung als HTML anstelle von XML

Ich habe folgende Controller:

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 

jedoch, wenn ich rufe die 'load_progress Methode' ich folgendes:

loszulegen "/ load_progress xml." Für 127.0.0 . Verarbeitung von ChartController # load_progress als HTML 406 Abgeschlossen Nicht akzeptabel in 251ms

Ich habe auch versucht, die Änderung der respond_to Block

respond_with chart 

Aber ich bekomme die gleiche Antwort. Ich habe die gesamte neue Rails-Dokumentation zum neuen respond_with-Format gelesen, aber ich kann keine XML-Antwort erhalten. Hoffe verzweifelt, dass jemand ein paar Ideen hat.

Antwort

3

hatte ich das gleiche Problem, und das folgende Snippet für mich gearbeitet:

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

406 can happen for several reasons - in der Regel, wenn ein falschen MIME-Typ verwendet -, sondern auf der Grundlage der rails guides, wenn Sie eine XML-Antwort erstellen, wie oben beschrieben Alles wird von den Schienen korrekt ausgefüllt.

Es gibt einen Nachteil des obigen Snippets. Es wird jedes Attribut Ihres Modells auflisten.

In Ihrem Beispiel bin ich nicht sicher, ob die chart Variablen/sichtbar initialisiert werden oder nicht.

+3

Zusätzlich benötigen Sie möglicherweise ein: format =>: xml in Ihrem routes.rb für den richtigen Controller – Zsolt

+1

Ja, erzwingt das Format im Routing scheint das Problem zu lösen. – Andy

0

Was Sie tun, sieht richtig aus. Verwenden Sie Ruby 1.9.2? Ich weiß, dass 1.9.0 Probleme hat, aber ich bin nicht sicher, dass es das erklären würde.

+0

Ja, ich bin auf Ruby 1.9.2. Sind selten so perplex von Rails gewesen. – Andy

Verwandte Themen