5

我目前有如下所示的 URL:

things?category_id=6&country_id=17

我希望有如下所示的 URL:

/printer_cartridges/united_kingdom

Rails 3 中是否有一种方法,无需对路由器中的所有类别和国家/地区进行硬编码,即可拥有我想要的 URL,也许使用find_by_name或类似的方法?解决这个问题的最佳方法是什么?

4

2 回答 2

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

然后您需要更新您的操作以使用 params[:category_slug] 和 params[:country_slug] 而不是 id 来查找所有内容。查看slugged gem以生成 slug。

于 2011-02-14T18:33:42.493 回答
3

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

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

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

于 2011-02-14T19:13:48.223 回答