Frage

Gibt es eine einfache Möglichkeit, Daten auf dem Web-Service-Clients in JSON zurück Rails?

War es hilfreich?

Lösung

Rails Ressource gibt eine RESTful-Schnittstelle für Ihr Modell. Lassen Sie uns sehen.

Modell

class Contact < ActiveRecord::Base
  ...
end

Routen

map.resources :contacts

Controller

class ContactsController < ApplicationController
  ...
  def show
    @contact = Contact.find(params[:id]

    respond_to do |format|
      format.html 
      format.xml {render :xml => @contact}
      format.js  {render :json => @contact.json}
    end
  end
  ...
end

So Dies gibt Ihnen eine API-Schnittstellen, ohne dass spezielle Methoden zu definieren, welche Art von respond bekommt erforderlich

Eg.

/contacts/1 # Responds with regular html page

/contacts/1.xml # Responds with xml output of Contact.find(1) and its attributes

/contacts/1.js # Responds with json output of Contact.find(1) and its attributes

Andere Tipps

Rails monkeypatches die meisten Dinge, die Sie würde kümmern uns um eine #to_json Methode zu haben.

Aus der Spitze von meinem Kopf, können Sie es für Hashes, Arrays tun, und Activerecord-Objekte, die etwa 95% der Anwendungsfälle abdecken sollten Sie vielleicht. Wenn Sie Ihre eigenen benutzerdefinierten Objekte haben, ist es trivial Ihre eigene to_json Methode für sie zu schreiben, die nur Daten in eine Hash-verklemmen können und dann die jsonized Hash zurück.

Es ist ein Plugin, das genau dies tut, http: //blog.labnotes .org / 2007/12/11 / json_request-Handling-json-Anfrage-in-Schienen-20 /

Und von dem, was ich verstehe diese Funktionalität bereits in Rails ist. Aber gehen Sie diese Blog-Post sehen, gibt es Code-Beispiele und Erklärungen.

Active stellt auch Verfahren mit JSON zu interagieren. So erstellen JSON aus einem AR-Objekt, rufen Sie einfach object.to_json. ein AR-Objekt aus JSON zu erstellen, sollten Sie ein neues AR-Objekt und rufen Sie dann object.from_json .. soweit ich verstand, aber das hat nicht funktioniert für mich.

erstellen können
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top