2011-02-14 16 views
5

tengo actualmente URLs que se ven así:Creación de URLs amigables SEO en Rails 3

things?category_id=6&country_id=17 

y me gustaría tener las URL que se parecen a esto:

/printer_cartridges/united_kingdom 

¿Hay una manera de Rails 3, sin una codificación rigurosa de todas las categorías y países en el enrutador para tener las URL como me gustaría antes, tal vez usando find_by_name o similares? ¿Cuál es la mejor manera de abordar esto?

+3

Lea la Guía de Rails sobre el enrutamiento, especialmente los recursos anidados: http://guides.rubyonrails.org/routing.html#nested-resources – Dominic

Respuesta

4
match '/:category_slug/:country_slug', :to => 'things#index' 

A continuación, tendrá que actualizar su acción para buscar todo utilizando params [: category_slug] y [params: country_slug] en lugar de los identificadores. Mira el slugged gem para generar babosas.

+1

La gema slugged de Sutto es el camino a seguir en esto. Gracias Jordan. – Gav

3

En el modelo de su categoría añadir el método

def to_param 
    "#{category_name.parameterize}/#{location_name.parameterize}" 
end 

donde category_name y location_name son en los que ingresó en el que tiene tener los nombres almacenados.

Cuestiones relacionadas