¿Cuál es la forma preferida de emitir una respuesta 404 a partir de una acción de controlador de rieles?¿Cómo se emite una respuesta 404 de una acción de controlador de rieles?
Respuesta
Esto parece buena ...
# Rails 2 and below
render :file => "#{RAILS_ROOT}/public/404.html", :status => 404
# Rails 3 and up
render :file => "#{Rails.root}/public/404.html", :status => 404
[Esta respuesta ] (http://stackoverflow.com/questions/2385799/how-to-redirect-to-a-404-in-rails#answer-4983354) en otra pregunta me parece más poderosa. Bonificación: incluye el código de prueba :-) – webmat
Use Rails.root.to_s en lugar de RAILS_ROOT en las versiones posteriores de los rieles – deb
@deb ¿Qué diferencia hace? La interpolación de cadenas llamará 'to_s' implícitamente. –
render :file => '/path/to/some/filenotfound.rhtml',
status => 404, :layout => true
Esto es un poco más agradable ... –
En el ApplicationController definir un método como:
def render_404
render :file => "#{RAILS_ROOT}/public/404.html", :status => 404
end
También puede
raise ActiveRecord::RecordNotFound
excepción.
por ejemplo usando '.find_by!' O '.first!' –
la siguiente manera era lo mejor para mí:
raise ActionController::RoutingError.new('Not Found')
o simplemente
raise ActionController::RoutingError, 'Not Found'
O hay otras soluciones: How to redirect to a 404 in Rails?
Igual pero más simple: 'raise ActionController :: RoutingError, 'Not Found'' –
Si desea emitir un código de estado en una redirección (por ejemplo, 302), puede poner esto en routes.rb
:
get "/somewhere", to: redirect("/somewhere_else", status: 302)
.
Sin embargo, esto solo funcionaría para la redirección, no directamente cargando una página.
- 1. Perfil de una acción de controlador de rieles
- 2. Restringir campos específicos de la respuesta del controlador de rieles
- 3. Rieles: ¿cómo se usa javascript condicional en el controlador/acción
- 4. Rieles: Cómo determinar controlador/acción en vista
- 5. ¿Puedo invocar una acción en otra acción (en un controlador de rieles)?
- 6. ¿Cuál es la forma correcta de ejecutar una acción de controlador desde otra acción de controlador sin una redirección HTTP?
- 7. Rieles: nombre de la acción del controlador en la cadena
- 8. método indefinido `devise_for 'en el controlador de acción de rieles
- 9. Devolución de una redirección 301 desde una acción de controlador
- 10. Rieles: ¿Cómo POSTAR internamente a otra acción del controlador?
- 11. ¿Cómo debería ser una acción de controlador si solo redirige?
- 12. Convierta una excepción en respuesta HTTP 404 en Application_Error
- 13. ¿Cómo se define una dirección de respuesta?
- 14. ¿Cómo puedo finalizar una respuesta y devolver el código HTTP 404?
- 15. ¿Cómo pruebo la unidad de una acción de controlador que utiliza su controlador. Variable de usuario?
- 16. Rieles: ¿alguna forma elegante de manejar 404?
- 17. Uso de jQuery para llamar a una acción de controlador
- 18. ¿Cómo se prueba una respuesta 204 en RSpec en Rails?
- 19. Rieles: ruta a la acción del controlador personalizado
- 20. ¿Cómo puedo llamar a una acción de controlador desde una tarea de rake?
- 21. Rieles before_filter e identificación de acción
- 22. generar una alerta en el controlador de rieles sin redirigir
- 23. Generar direcciones URL utilizando T4MVC en una acción de controlador
- 24. ruta ASP.NET MVC devolver 404 sin acción
- 25. Crear una nueva acción para el controlador existente
- 26. Crear nueva acción de rieles no funciona?
- 27. ¿Cómo obtener la respuesta de un controlador desde otro controlador?
- 28. ASP.NET MVC enviando datos JSON a una acción de controlador
- 29. ¿Cómo hacer que CakePHP redirija a una acción/controlador diferente?
- 30. Anula una acción del controlador de Rails Engine
posible duplicado de [¿Cómo redirigir a un 404 en Rails?] (Http://stackoverflow.com/questions/2385799/how-to-redirect-to-a-404-in-rails) –