5 votes

backbone.js et la gestion des messages d'erreur de rails ?

Je me demande si les utilisateurs de backbone.js peuvent m'aider ?

Quelle est la meilleure façon d'encoder les messages d'erreur d'une application rails lorsqu'elle est utilisée avec backbone.js, par exemple les messages d'erreur qui étaient autrefois définis comme des messages flash, par exemple "record not found".

La plupart du temps, les erreurs peuvent être définies dans le client. Cependant, il arrive que l'on veuille transmettre une erreur que l'on a définie dans le code côté serveur, ce qui signifie que le résultat du serveur est différent de ce que l'on attendait de la réception normale d'une liste d'enregistrements dans une collection.

4voto

Julien Points 7456

Si vous définissez votre contrôleur de rails comme :

respond_to :json

Vous recevrez vos erreurs au format json (vous devez utiliser respond_with(object)).

class XYZController < ApplicationController
  respond_to :html, :json
  responders :jsons
  def create
    @xyz = Xyz.new( params[:xyz] )
    @xyz.save
    respond_with @xyz, :location=>@xyz.id.nil? ? "" : edit_xyz_url(@xyz)
  end
end

J'ai créé mon répondeur json pour mieux gérer le backbone :

module Responders

  module JsonResponder 

    def to_json
      raise error unless resourceful?

      if get?
        display resource
      elsif has_errors?
        display resource.errors, :status => :unprocessable_entity
      elsif post?
        display resource, :status => :created, :location => api_location
      elsif put?
        display resource, :status=>:ok, :location => api_location
      elsif has_empty_resource_definition?
        display empty_resource, :status => :ok
      else
        head :ok
      end
    end
  end
end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X