定制用户在Rails显示路线

问题描述:

我想,而不是/ user /:id我想要的默认用户路线是/用户:created_at我能够得到/用户:ID工作(没有第二/),但是当我尝试做:created_at我得到一个错误。定制用户在Rails显示路线

有谁知道如何解决这个问题?另外,即使我有match 'users:id', :to => 'users#show', :as => :user, :via => :get/user/1仍然是有效的链接,因为我的config/routes.rb中有resources :users。有没有办法在rails编译resources :users时删除default/user /:id?

+1

这不难做你在问什么,但是,创建在不是资源的唯一标识符。如果可以,您应该考虑使用其他字段。 – jdeseno 2012-01-07 21:08:34

+0

哦,该领域必须是独一无二的? – Vasseurth 2012-01-09 04:03:41

+1

如果两个项目的创建时间相同; resource/foo /:created_at引用哪个项目?它不*有*是唯一的,但是,应该是这些URL代表单个资源(而不是所有创建的项目的集合)。 – jdeseno 2012-01-09 16:24:29

如果我理解正确的话,你可以使用to_param:http://apidock.com/rails/ActiveRecord/Base/to_param

所以,如果你在你的用户模型例如

使用

def to_param 
    "#{first_name}_#{last_name}" 
end 

然后user_path(@user)将产生/用户/ planet_pluto

,以防止由map.resources产生路线简单地使用:除了

map.resources :user, :except => [:show] 

希望可以帮到

+0

由于某些原因,这不会改变路线。 – Vasseurth 2012-01-10 22:57:08

+0

如果您运行耙路线,您仍然可以看到正在生成的用户#show的路线? – 2012-01-11 11:59:00

+0

不,但我的意思是路由不是从/ user /:id – Vasseurth 2012-01-11 19:16:53