2017-02-06 3 views
0

Hier ist der Code render json: news, :include => {:tags => {:only => :name}, :category => {:only => :name}}, die diese Ausgänge:Rails: Ändern json Ausgabe

{ 
"id": 2, 
"title": "title", 
"tags": [], 
"category": { 
    "name": "lorem" 
} 

Gibt es eine Möglichkeit, es so zu Ausgang?

{ 
"id": 2, 
"title": "title", 
"tags": [], 
"category": "lorem" # <--- display category name 
} 
+0

Verwenden Sie eine Serialisierungsbibliothek? Können Sie die Details in Ihrem Post angeben? –

Antwort

0

In Ihrem Nachrichten-Modell, können Sie definieren:

def as_json(options={}) 
    {id: id, title: title, tags: tags}.tap do |hash| 
    hash[:category] = category.name unless category.nil? 
    end 
end 

Und dann einfach: render json: news

Du musst wahrscheinlich den Code in as_json ändern, was Struktur, die Sie zu passen haben erstellt für Ihr Modell, aber die Idee ist es, einen Hash in dem Format, das Sie für Ihre json wollen, dann lassen Sie Schienen es in json verwandeln.

+0

jetzt bekomme ich 'undefinierte Methode' name 'für nil: NilClass', weil nicht alle Nachrichten Kategorie zugewiesen haben. Gibt es eine Möglichkeit, es zu umgehen? –

+0

können Sie den Tabelleneintrag für das Nachrichtenmodell aus db/schema.rb veröffentlichen? Ich kann keine Arbeitsfunktion für Ihre Nachrichtenklasse schreiben, ohne dessen Interna zu kennen. – eiko

+0

oh eine Sekunde, ich habe gerade Ihren Kommentar gesehen. Ich werde meinen Code aktualisieren. – eiko