在Rails 3中创建SEO友好URL

我目前的url如下:

things?category_id=6&country_id=17 

我希望url看起来像这样:

 /printer_cartridges/united_kingdom 

在Rails 3中是否有一种方法,没有对路由器中的所有类别和国家进行硬编码以获得我想要的URL,可能使用find_by_name或类似的? 解决这个问题的最佳方法是什么?

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

然后你需要更新你的动作以使用params [:category_slug]和params [:country_slug]而不是id来查找所有内容。 看看被砸的gem会产生slu ..

在您的类别模型中添加方法

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

其中category_name和location_name是您输入存储名称的位置。