使用默认参数的资源路由:id

时间:2014-11-12 17:58:30

标签: ruby-on-rails rails-routing

我的资源有一条路线:

resources :categories

我需要使用key属性而不是id生成指向类别的链接,所以我使用了这个:

category_path(category, :id=>category.key)

生成此

/categories/blah.1

其中blah是所需的密钥,而1是不需要的ID。我怎么能用id来唤醒那个点为什么它出现在那里?

1 个答案:

答案 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属性是否存在并且是唯一的,这样就不会在控制器中遇到无效/无类别查找查询。