ruby on rails - rails - Qué significa.: Formato significa en las rutas de rake
ruby on rails run migrations (2)
.: el formato coincide con un tipo mime.
Por ejemplo, si envía una solicitud buscando index.html, el formato captura "html" como: formato.
Luego en tu controlador será procesado por algo como
respond_to do |format|
format.html { #do something like redirect in here }
end
Escribo rutas de rake y recibo un montón de urls como este - /articles/:id(.:format)
Mi pregunta es: ¿qué significa el .:format
? No está claro en el artículo Enrutamiento de Guías de Rails y no hay otras coincidencias útiles para el .:format
En StackOverflow o Google. Hay un formato similar que es /:controller(/:action(/:id(.:format)))
que tampoco entiendo.
Gracias
EDITAR la pregunta de seguimiento -
Si quisiera solo enrutar páginas HTML. ¿Sería una buena práctica especificar algo como.: Html en la ruta o usar.: Format y simplemente escribir un bloque respond_to para format.html? ¿Se ignorarían todos los otros formatos en este último caso?
Ese es el formato del archivo que se solicita. Por ejemplo, si desea una imagen, probablemente tendría una extensión de archivo en la solicitud; por ejemplo, example.com/example_image.png
le daría el formato como png
. Esto se incluye en la solicitud para que pueda variar el tipo de respuesta en función del formato solicitado, según sea necesario.
Para un ejemplo de uso, es posible que desee permitir que un recurso se represente como un pdf, como una página html y como json. Probablemente escriba algo como esto:
respond_to do |format|
format.html { ... }
format.pdf { ... }
format.json { ... }
end
Luego haga llamadas de render separadas bajo los formatos respectivos.
EDITAR:
Explicación de GET /:controller(/:action(/:id(.:format))) :controller#:action
-
Primero, un poco sobre el formateo. Los paréntesis significan que un dato dado es opcional. Los dos puntos significan que cualquier cadena que encuentre en la URL correspondiente se debe pasar al controlador dentro del hash de params.
Esto es esencialmente un comodín de comodín que intentará hacer coincidir un número muy amplio de solicitudes a un controlador. Por ejemplo, digamos que esta es su única ruta y alguien intenta obtener ''/ users''. Esto asignará a los users
al UsersController
y, de forma predeterminada, el index
llamada / procesamiento dentro de él. Si alguien obtiene users/new
, se llamará a la new
acción dentro del controlador. Si se llama id
y format
, también se pasarán al controlador.