2010-04-03 6 views
14

Ich versuche, eine API für meine Rails-Anwendung mit JSON-Antworten auf RESTful Resource Controller zu machen. Das ist eine neue Erfahrung für mich, also suche ich nach Anleitungen und Tipps. Zum Starten der Dinge:Rails 3: Was ist der richtige Weg, um auf REST-ful-Aktionen mit JSON in Rails zu reagieren?

  1. In einer Rails-Anwendung, was ist die "richtige" Möglichkeit, mit JSON auf REST-ful Controller-Methoden zu reagieren? (create, update, destroy)
  2. Gibt es einen idiomatischen Weg, Erfolg/Misserfolg durch eine JSON-Antwort anzuzeigen?

Zusätzliche Informationen:

  • Ich arbeite derzeit mit Schienen 3.0.beta2
  • Ich möchte mit einem Plugin oder Edelstein vermeiden, dass die Hauptarbeit zu tun, mein Ziel ist es, ein besseres Verständnis davon zu bekommen, wie man eine Rails 3 API erstellt.
  • Links zu Orten, die ich mehr Informationen zu diesem Thema finden könnte, würde auch geschätzt werden, einige schnelle Suche auf Google hat mir nicht viel Gutes getan.
+0

Hat du diesen Teil herausfinden: „Gibt es einen idiomatischen Weg Erfolg/Misserfolg durch eine JSON-Antwort, um anzuzeigen“ –

+0

Ich habe in letzter Zeit nicht mit Schienen gearbeitet, aber von dem, was ich in anderen Projekten gesehen habe, scheint eine boolesche Flagge in dem zurückgegebenen JSON-Objekt der direkteste Weg zu sein, den Erfolg/Misserfolg eines JSON-Aufrufs zu messen. –

Antwort

29
#config/routes.rb 
MyApplicationsName::Application.routes.draw do 
    resources :articles 
end 

#app/controllers/articles_controller.rb 
class ArticlesController < ActionController::Base 

    # so that respond_with knows which formats are 
    # allowed in each of the individual actions 
    respond_to :json 

    def index 
    @articles = Article.all 
    respond_with @articles 
    end 

    def show 
    @article = Article.find(params[:id]) 
    respond_with @article 
    end 

    ... 

    def update 
    @article = Article.find(params[:id]) 
    @article.update_attributes(params[:article]) 

    # respond_with will automatically check @article.valid? 
    # and respond appropriately ... @article.valid? will 
    # be set based on whether @article.update_attributes 
    # succeeded past all the validations 
    # if @article.valid? then respond_with will redirect to 
    # to the show page; if [email protected]? then respond_with 
    # will show the :edit view, including @article.errors 
    respond_with @article 
    end 

    ... 

end 
+0

Genau das, was ich gesucht habe, danke. Ich erinnere mich, in der Rails-Dokumentation "respond_with" gesehen zu haben, aber aus irgendeinem Grund hat es nicht geklickt. Das hat sehr geholfen, danke! –

+0

Bedeutet das, dass wir _need_ tun müssen? <% If @ article.valid? %> 'Logik in den Ansichten? – dazonic

+0

Sie benötigen die Logik in den Sichten, um zu prüfen, ob Fehler angezeigt werden sollen. Aber ich habe meine Antwort mit mehr Informationen aktualisiert. – yfeldblum

Verwandte Themen