3 Stimmen

Erstellen einer Aktion in einer Schienen-Api mit json

Ich versuche, eine einfache Aktion in einem Rails-Controller zu bauen, die als eine API handeln wird.

In diesem Fall versuche ich, eine Erstellung auszuführen, wenn ein Client eine json kodierte Zeichenfolge sendet.

Im Moment sieht es bei mir so aus:

def create
  @user = User.new.from_json(params[:user])
  respond_to do |format|
    if @user.save
      format.json { render json: @user, status: :created, location: @user }
    else
      format.json  { render json: @user.errors, status: :unprocessable_entity }
    end
  end
end

Ich mag nicht, wie ich auf den to_json Aufruf durch, um die Erstellung zu tun abhängig sind. Im Moment reagiere ich nur auf eine Json-Payload, aber wenn wir beschließen, es zu xml erweitern dieser Code bricht.

Gibt es eine sauberere Methode, um einen neuen Benutzer aus Daten im Json-Format zu erstellen?

Ich habe versucht, nur in der params[:user] (die die Json-Zeichenfolge ist) zu User.new übergeben, aber bekam Fehler.

Als Referenz sieht mein json wie folgt aus:

{"email":"email.address@gmail.com","password":"password"}

3voto

Robin Punkte 21168

Ich bin nicht sicher, aber vielleicht möchten Sie die .from_json(params[:user]) Teilnahme an der format.json blockieren?

def create
    @user = User.new
    respond_to do |format|
        format.json do
            if @user.from_json(params[:user]).save
               #render user
            else
               #render errors
            end
        end
        format.xml do
            if @user.from_xml(params[:user]).save
            else
            end
        end
    end
end

Auf diese Weise würde es nicht zerbrechen, wenn Sie xml erhalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X