Rails 3 - Limiter les formats d'action dans les itinéraires des ressources
J'ai une ressource définie dans mes itinéraires.
resources :categories
Et j'ai la suite dans ma Catégorie de contrôleur:
def show
@category = Category.find(params[:id])
respond_to do |format|
format.json { render :json => @category }
format.xml { render :xml => @category }
end
end
L'action du contrôleur fonctionne très bien pour json et xml. Je ne veux cependant PAS la réponse du contrôleur au format html demandes. Comment puis-je autoriser uniquement json et xml? Cela ne devrait se produire que dans l'action show.
Quelle est la meilleure façon d'atteindre cet objectif?
Aussi est-il de bons conseils pour le Séchage le bloc respond_to?
Merci pour votre aide.
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé que cela semblait fonctionner (merci à @Pan pour me pointer dans la bonne direction):
Ci-dessus semble forcer le routeur en servant un format de moins de demande, à la fin de l'action, comme json par défaut.
Vous devez emballer ces itinéraires dans un champ si vous souhaitez limiter à un format spécifique (par exemple, html ou json). Les contraintes malheureusement ne fonctionne pas comme prévu dans ce cas.
C'est un exemple d'un tel bloc...
Plus d'informations peuvent être trouvées ici: https://github.com/rails/rails/issues/5548
Cette réponse est copié de ma précédente réponse ici..
Rails de Voies de Limiter les formats disponibles pour une ressource
Vous pouvez effectuer les opérations suivantes dans vos itinéraires.rb fichier pour s'assurer que seule l'action est limitée en json ou xml:
Si cela ne fonctionne pas, vous pouvez essayer explicitement correspondant à l'action:
constraints
n'a pas de travail pour les requêtes POST et puis j'ai essayédefaults
il fonctionne pour tous.J'ai été en utilisant
Rails 4.2.7