Rails 3 respond_with json-Frage
Probleme mit der Erzeugung von einigen json. Ich bin versucht zu Rendern eines
einzelne aktive Rekord-Ergebnis in json wie diese:
@data = User.find(1)
respond_with(@data, :include => :status)
Json-Ergebnis:
{
-user: {
address: null
email: "[email protected]"
first_name: "Test"
last_name: "Man"
status_id: 1
username: "testguy"
status: { }
}
}
Also was ist das problem? Das problem ist, dass die :include=>: - status scheint
nicht über die Beziehung. In meinem User-Modell ich habe
belongs_to :status. Wie bekomme ich diese zu arbeiten, auf ein einzelnes ResultSet?
Wenn ich dies tun:
@data = User.where("id = 1")
respond_with(@data, :include => :status)
Die Beziehung zeigt, in das json-Ergebnis fein diese Weise. Aber seine
in ein array von Objekten, die ich nicht will.
Irgendwelche Ideen?
InformationsquelleAutor Mike Jaffe | 2011-05-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gehe davon aus, dass die status, die Sie einbeziehen möchten, ist nicht von der http-status-Code (200, 201, etc.) noch ein Objekt, mit dem Benutzer verknüpfte Objekt in irgendeiner Art und Weise und wird Ihre eigenen Variablen.
Mit Schienen 3.0.10 und Ruby 1.9.2, die Sie haben können finden, eine der beiden Lösungen für Sie geeignet. Statt
respond_with
verwendenrender
wie folgt.Lösung 1
Json-Ergebnis:
Lösung 2
Json-Ergebnis:
Ich hoffe das ist, was Sie gesucht haben.
InformationsquelleAutor mdziurla
Es klingt wie Sie haben einige der gleichen leiden, die ich erlebt mit den eingebauten Schienen-Serialisierung. Ich landete mit RABL-Vorlagen, die mein Leben viel einfacher. Wenn Sie brauchen eine Anleitung, aufstehen und laufen mit RABL schnell, habe ich eines gemeinsam:
http://blog.dcxn.com/2011/06/22/rails-json-templates-through-rabl/
InformationsquelleAutor nixterrimus
where
gibt ein array zurück, so dass Ihre Ergebnisse Sinn machen. Sie müsstenwhere().first
oder, da es nur eine ID-Suche, verwenden Sie einfachfind
.Dieser war vor langer Zeit, aber immer noch, das ist die prägnanteste Antwort:
:include
imrespond_with
nennen), aber ich kann nicht scheinen zu finden, keine Dokumentation für dieses, nicht einmal in derresponders
gem README-Datei. wie wussten Sie, dass Sie dieses feature verwenden?InformationsquelleAutor Woahdae
Könnten Sie gelöst habe es jetzt mate, aber wenn Sie noch im laufen in die probs, die Sie tun können, es auf diese Weise, wenn Sie wollen?
Wenn das nicht funktioniert, kann es etwas falsch mit Ihrer Vereinigungen. Es ist ein wirklich guter Abschnitt in der api auf 'Eager loading 'Vereinigungen' hier:
http://apidock.com/rails/ActiveRecord/Associations/ClassMethods
InformationsquelleAutor 2potatocakes
Als nixterrimus darauf hingewiesen, RABL ist wirklich der Weg zu gehen. Es ist einfach, sauber und elegant. Ich bin relativ neu auf Schienen, und haben diese nicht genutzt-Techniken (to_json, etc) aber nachdem einige der Forschung getan und tatsächlich RABL, ich kann mir nicht helfen, aber Frage mich, warum es nicht eine native Funktion von Schienen.
InformationsquelleAutor Shyam Habarakada