J'ai un site Rails 2.1.2 qui n'a que des modèles html, par ex. jobs.html.erb, quand je demande une ressource reposante:Méthodes pour limiter le format de rendu Rails à html
www.mysite.com/jobs/1
Il rend mon travail en html, cependant, si je demande:
www.mysite.com/jobs/1.xml
Je reçois l'erreur:
Template is missing Missing template jobs/show.xml.erb in view path c:/workspace/mysite/app/views
ce qui est pire est que je peux aussi demander quelque chose comme
www.mysite.com/jobs/1.xyz
Et en effet, je vois l'erreur:
Template is missing Missing template jobs/show.xyz.erb in view path c:/workspace/mysite/app/views
Pour stricly contenu actuel juste html, ce qui est la manière la plus propre et la plus simple de dire Rails que je ne veux pas rendre quelque chose autre que les fichiers .html.erb.
Il est important de noter que:
- Certains de mes actions de contrôleur contiennent des appels conditionnels à la méthode render() tandis que d'autres utilisent le comportement par défaut de Rails-à-dire si vous n'appelez pas render(), la Le modèle nommé youraction.html.erb sera rendu.
- Mon code ne pas utiliser la méthode
responds_to() Ce serait formidable si la solution n'a pas été à la rendre/niveau responds_to que je dois modifier un nombre important d'actions. Peut-être existe-t-il un moyen de configurer Rails pour que seuls les templates html soient rendus?
Cela ne renvoie pas réellement un 404, cependant, il rend juste '404.html' comme réponse 200. Vous devrez ajouter ': status => 404' (ou': status =>: not_found'). De même, pour un 406, vous devrez utiliser ': status => 406' (ou': status =>: not_acceptable'). – Peeja
Cela échoue également si la demande utilise l'en-tête 'accept' pour demander le type de réponse, car cela n'est pas stocké dans les paramètres – zimkies