我目前有如下所示的 URL:
things?category_id=6&country_id=17
我希望有如下所示的 URL:
/printer_cartridges/united_kingdom
Rails 3 中是否有一种方法,无需对路由器中的所有类别和国家/地区进行硬编码,即可拥有我想要的 URL,也许使用find_by_name
或类似的方法?解决这个问题的最佳方法是什么?
我目前有如下所示的 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 来查找所有内容。查看slugged gem以生成 slug。
在您的类别模型中添加方法
def to_param
"#{category_name.parameterize}/#{location_name.parameterize}"
end
其中 category_name 和 location_name 是您输入存储名称的位置。