Ruby on Rails: Hilfe für Render: layout => false
-
30-09-2019 - |
Frage
Ich versuche, den Zugriff auf eine Rails-Anwendung Ressource von einer API (es sendet eine Anwendung / XML-GET-Request) und ich möchte nicht die XML-Datei analysieren müssen.
In meinem Ressourcencontroller ich habe folgende:
def get_resource
@my_resource = Resources.new
render :xml => @my_resource
end
, die eine XML-Datei erzeugt, wie erwartet. Wenn ich ersetzen Sie es mit:
render :layout => false
meine API meldet eine „Vorlage fehlt“ Fehler. Ich habe auch die folgende versucht:
render :xml => @identity, :layout => false
Aber die Seite macht sowieso. Was ist der richtige Weg, um dies zu realisieren?
Lösung
Wenn Sie machen: xml, ist es nicht ein Layout verwenden, da es keine Vorlage entweder nicht verwendet. Durch die Angabe: layout => false, sagen Sie Schienen zu sehen für eine Vorlage, die nicht existiert
.Nun, wenn Sie nicht wollen, eine XML-Datei zu analysieren, dann haben Sie ein paar Alternativen. Entweder:
render :json => @my_resource
oder
render :text => "My resource name is: #{@my_resource.name}" # Whatever you want
Es hängt alles davon ab, wie Sie das Ergebnis zu sehen möchten, was Ihre API zu erhalten erwartet. Also, wenn du nicht dieses nützlich finden, geben ein Beispiel, wie Sie die Antwort zu suchen.
Andere Tipps
def get_resource
@my_resource = Resources.new
respond_to do |wants|
wants.xml { render :xml => @my_resource }
wants.html { render :layout => false }
end
end
Lesen Sie diesen Artikel: http://tokumine.wordpress.com/2009/09/13/how-does-respond_to-work-in-the-rails-controllers/