Spécifique de restreindre les champs dans la réponse de rails contrôleur
J'ai un contrôleur de l'action comme
def index
@videos = Video.all.to_a
respond_to do |format|
format.xml { render :xml => @videos }
format.json { render :json => @videos }
end
end
Vidéo a des attributs name
et title
.
Je veux le retour xml contient seulement title
.
Comment puis-je limiter de la réponse.
OriginalL'auteur Sarvesh | 2011-08-02
Vous devez vous connecter pour publier un commentaire.
Le faire comme ceci:
Vous pouvez trouver plus d'informations à ce sujet à la sérialisation de la documentation.
OriginalL'auteur Maurício Linhares
Vous pouvez utiliser un
select
clause sur votreVideo.all
requête en spécifiant les champs que vous souhaitez inclure.Aussi, vous ne devriez pas besoin d'appeler
to_a
sur votre requête.OriginalL'auteur Dylan Markow
Vous pouvez définir votre propre
.to_xml
méthode à l'intérieur d'video.rb
,e.g:
Et ensuite appeler
respond_with(@videos)
à vous de contrôleur.Voir ce question similaire.
OriginalL'auteur jpemberthy
un moyen rapide serait d'utiliser :arracher, si vous êtes juste de retour d'un éventail de titres (je suppose que non :id) , alors ce serait très rapide
:arracher sera beaucoup plus rapide que toutes les autres options, car il renvoie un tableau avec les données demandées. Il n'a pas d'instancier un ensemble de ActiveRecord Objet pour chaque ligne de base de données. Parce que ses rubis, ces instanciations sont de ce la plupart du temps. Vous pouvez également le faire :
si vous ne voulez pas d'obtenir votre SQL crayon, c'est assez bon
OriginalL'auteur Jon