2010-04-03 11 views
14

Estoy tratando de hacer una API para mi aplicación de rieles utilizando respuestas JSON a los controladores de recursos RESTful. Esta es una experiencia nueva para mí, así que estoy buscando orientación e indicaciones. Para empezar:Rails 3: ¿Cuál es la forma correcta de responder a acciones REST-ful con JSON en rieles?

  1. En una aplicación de rieles, ¿cuál es la forma "correcta" de responder con JSON a los métodos de controlador REST-ful? (crear, actualizar, destruir)
  2. ¿Hay una manera idiomática de indicar el éxito/fracaso a través de una respuesta JSON?

Información adicional:

  • Actualmente estoy trabajando con los carriles 3.0.beta2
  • me gustaría evitar el uso de un plugin o una gema para hacer el trabajo sucio, mi El objetivo es obtener una mejor comprensión de cómo hacer una API de rails 3.
  • Los enlaces a los lugares en los que podría encontrar más información sobre el tema también serían apreciados, algunas búsquedas rápidas en google no me sirvieron de mucho.
+0

Te diste cuenta de esta parte: "¿Hay una forma idiomática para indicar el éxito/fracaso a través de una respuesta JSON" –

+0

No he estado trabajando con los rieles últimamente, pero por lo que he visto en otros proyectos, una bandera booleana en el objeto JSON devuelto parece ser la forma más directa de medir el éxito o el fracaso de una llamada JSON. –

Respuesta

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

Exactamente lo que estaba buscando, gracias. Recuerdo haber visto 'responder_con' en la documentación de los rieles, pero por alguna razón no hizo clic. Esto ayudó mucho, ¡gracias! –

+0

¿Esto significa que debemos _need_ hacer '<% if @ article.valid? %> 'lógica en las vistas? – dazonic

+0

Necesita la lógica en las vistas para comprobar si se muestran errores. Pero actualicé mi respuesta con más información. – yfeldblum

Cuestiones relacionadas