Mam witrynę Rails 2.1.2, która ma tylko szablony html, np. jobs.html.erb, więc kiedy poprosić o spokojny zasobu:Metody ograniczania formatu renderowania Railsów do html
www.mysite.com/jobs/1
To czyni moją pracę w HTML, jednak, jeśli żądanie:
www.mysite.com/jobs/1.xml
pojawia się błąd:
Template is missing Missing template jobs/show.xml.erb in view path c:/workspace/mysite/app/views
Co gorsze jest to, że mogę również zażądać coś podobnego
www.mysite.com/jobs/1.xyz
I rzeczywiście widzę błąd:
Template is missing Missing template jobs/show.xyz.erb in view path c:/workspace/mysite/app/views
Aby stricly obecny tylko html zawartości, co jest najczystszym i najprostszym sposobem, aby powiedzieć Rails, że nie chcę, aby uczynić coś innego niż pliki .html.erb.
Ważne jest, aby pamiętać, że:
- Niektóre z moich działań regulatora zawierać połączenia uzależnione od metody render(), podczas gdy inni używają zachowanie domyślne Rails czyli jeśli nie nazywamy render(), a następnie szablon o nazwie youraction.html.erb zostanie wyrenderowany.
- Mój kod nie używać metody responds_to()
Byłoby wspaniale, jeśli roztwór nie był w tynku/poziom responds_to jak będę musiał zmodyfikować znaczną liczbę działań. Być może istnieje sposób na skonfigurowanie Railsów, aby renderować tylko szablony HTML?
To faktycznie nie zwraca 404, ale po prostu renderuje '404.html' jako odpowiedź 200. Musisz dodać ': status => 404' (lub': status =>: not_found'). Podobnie, w przypadku 406, będziesz chciał użyć ': status => 406' (lub': status =>: not_acceptable'). – Peeja
To również nie powiedzie się, jeśli żądanie używa nagłówka "accept", aby zażądać typu odpowiedzi, ponieważ nie jest ono przechowywane w params – zimkies