Ahora que estamos utilizando a tope Rails 2.0 y toda la parafernalia REST en nuestras aplicaciones, nos hemos dado de bruces con un pequeño problema de rutas.
La solución pre-REST
Digamos que nuestras aplicaciones están internacionalizadas y que tenemos la costumbre de poner el código de idioma en la URL, utilizando un filtro para forzar que este código aparezca en la misma mediante una redirección. Una técnica bastante habitual y extensamente documentada.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
De este modo, la primera petición a la aplicación que no lleve el idioma en la URL recibirá como respuesta una redirección a la misma URL con el añadido del idioma.
El problema con REST
Si añadimos un recurso, las rutas generadas y los helpers para crear paths y urls no incluirán el código de idioma, por lo tanto, si no hacemos nada, al pasar por el filtro cada petición recibirá como respuesta un redirect. Mal asunto.
1 2 3 4 |
|
La solución
En primer lugar necesitamos modificar ligeramente las rutas para que estas incluyan el código de idioma.
1 2 3 4 5 |
|
Por último debemos lidiar con la generación de rutas. Como quedaría feo (y no muy DRY) tener que andar pasando el código de idioma a cada helper (léase order_path(@current_locale, @order)
) lo que necesitamos es modificar el comportamiento de Rails para que lo haga él solito. Y qué suerte la nuestra, ya existe un plugin para eso: localize_url_helpers, que de forma transparente incluye el idioma y nos permite usar los helpers como de costumbre.
C’est voila.
Lo sentimos, pero los comentarios están cerrados
Interesante plugin, voy a meterlo en mi lista de favoritos.
Hablando de internacionalización, hay un plugin muy interesante de un colega nuestro brasileño, en http://www.nomedojogo.com/custom-resource-name-plugin/, que hace que puedas darle nombres diferentes a las urls según gustes.
Quizá os viene bien para el tema internacionalización.
Un saludo.