2010-12-01 3 views
0

J'ai besoin de créer une méthode, qui est appelée par une application locale avec deux paramètres. Comment puis-je retourner vrai ou faux alors? avec xml? ma méthode ressemble à ceci:Façon de retourner Vrai/Faux avec des rails api?

def check_license 
    app_id = params[:id] 
    app_sn = params[:sn] 

    @license = License.find_by_id(app_id) 

    respond_to do |format| 
    if @license.app_serial == app_sn 
     # should return true here 
    else 
    # should return false here 
    end 
    end 
end 

merci d'avance!

Répondre

2

Vous devez d'abord décider avec le format que votre autre application interne appellera cette application. Les formats populaires (et sains) sont xml ou json.

Ensuite, dans votre contrôleur, vous devez rendre une réponse dans chacun de ces formats:

resp = @license.app_serial == app_sn 
respond_to do |format| 
    format.json { render :json => resp } 
    format.xml do 
     if resp 
     head :ok 
     else 
     render :xml => resp, :status => 403 # that's a failed authentication response 
     end 
    end 
end 
2

Je crois que vous pouvez simplement utiliser:

def check_license 
    app_id = params[:id] 
    app_sn = params[:sn] 

    @license = License.find_by_id(app_id) 

    @license.app_serial == app_sn 
end 

La dernière ligne une méthode rubis sera la valeur de retour, donc la méthode ici renvoie le résultat de cette dernière déclaration relationnelle: vrai ou faux.

Vous n'avez pas besoin de respond_to |format| si vous donnez la même réponse pour tous les formats, ce que je suppose que vous êtes, étant donné que vous renvoyez un booléen.

+0

merci. et comment puis-je supprimer l'erreur "Modèle manquant" lors de la navigation vers l'URL? – Tronic

+0

Voir ma réponse. Rails "rendra" un template par défaut. Vous devrez peut-être indiquer à Rails de rendre un objet directement, plutôt qu'avec un modèle. Utilisez 'render: json => value.to_json'. – yfeldblum

0
respond_to do |format| 
    @license.app_serial == app_sn 
    end 

Les rails renvoient automatiquement le résultat de la dernière ligne exécutée.

2
# if you can use json: 
licensed = @license.app_serial == app_sn 
respond_to do |format| 
    format.js { render :json => licensed.to_json } 
end 
Questions connexes