我目前的网址如下:
things?category_id=6&country_id=17
我希望网址看起来像这样:
/printer_cartridges/united_kingdom
在Rails 3中是否有一种方法,没有对路由器中的所有类别和国家进行硬编码以获得我想要的URL,可能使用find_by_name
或类似的?解决这个问题的最佳方式是什么?
答案 0 :(得分:4)
match '/:category_slug/:country_slug', :to => 'things#index'
然后你需要更新你的行动以使用params [:category_slug]和params [:country_slug]而不是id来查找所有内容。查看slugged gem以生成slu ..
答案 1 :(得分:3)
在您的类别模型中添加方法
def to_param
"#{category_name.parameterize}/#{location_name.parameterize}"
end
其中category_name和location_name是您输入存储名称的位置。