我的资源有一条路线:
resources :categories
我需要使用key
属性而不是id
生成指向类别的链接,所以我使用了这个:
category_path(category, :id=>category.key)
生成此
/categories/blah.1
其中blah
是所需的密钥,而1
是不需要的ID。我怎么能用id来唤醒那个点为什么它出现在那里?
答案 0 :(得分:1)
永久修复它的一种方法是,您可以在category_path(category, :id=>category.key)
类( app)中创建实例方法,这不需要您拥有Category
视图中的所有位置/models/category.rb):
def to_param
key.try(:parameterize)
end
基本上,to_param
是在生成模型对象到URL时在Rails中调用的方法。我们刚刚在这里重写了它。现在,您不必编写category_path(...)
,您可以这样做:
<%= link_to category.name, category %>
默认情况下会使用key
。使用您想要在链接中显示的适当值更改category.name
,这只是一个示例。
注意:确保始终在key
类中验证Category
属性是否存在并且是唯一的,这样就不会在控制器中遇到无效/无类别查找查询。