Ruby-on-Rails: Aide render: layout => false
-
30-09-2019 - |
Question
Je suis en train d'accéder à une ressource rails application d'une API (il envoie une requête GET Application / XML) et je voudrais ne pas avoir à analyser le fichier XML.
Dans mes ressources contrôleur j'ai les suivantes:
def get_resource
@my_resource = Resources.new
render :xml => @my_resource
end
qui produit un fichier XML comme prévu. Si je le remplace par:
render :layout => false
mon API signale une erreur « modèle manquant ». J'ai aussi essayé ce qui suit:
render :xml => @identity, :layout => false
Mais la page rend de toute façon. Quelle est la bonne façon de faire à ce sujet?
La solution
Lorsque vous render: xml, il n'utilise pas de mise en page, car il n'utilise pas non plus de modèle. En spécifiant: layout => false, vous dites rails pour trouver un modèle qui n'existe pas
.Maintenant, si vous ne voulez pas analyser un fichier xml, alors vous avez quelques solutions de rechange. Soit:
render :json => @my_resource
ou
render :text => "My resource name is: #{@my_resource.name}" # Whatever you want
Tout dépend de la façon dont vous voulez que le résultat de regarder, ce que votre API attend à recevoir. Donc, si vous ne trouvez pas tout cela utile, donner un exemple de la façon dont vous voulez la réponse à regarder.
Autres conseils
def get_resource
@my_resource = Resources.new
respond_to do |wants|
wants.xml { render :xml => @my_resource }
wants.html { render :layout => false }
end
end
Lire cet article: http://tokumine.wordpress.com/2009/09/13/how-does-respond_to-work-in-the-rails-controllers/