Ruby on rails 用其他内容替换资源用户id
我想使用类似于Ruby on rails 用其他内容替换资源用户id,ruby-on-rails,ruby-on-rails-4,devise,Ruby On Rails,Ruby On Rails 4,Devise,我想使用类似于domain.com/users/foo的东西,而不是像/users/user\u id/ 很公平,您可以执行get”/users/:name/…但我使用的是嵌套资源: devise_for :users, :controllers => { omniauth_callbacks: 'omniauth_callbacks' } resources :users do resource :profile resources :supports do
domain.com/users/foo
的东西,而不是像/users/user\u id/
很公平,您可以执行get”/users/:name/…
但我使用的是嵌套资源:
devise_for :users, :controllers => { omniauth_callbacks: 'omniauth_callbacks' }
resources :users do
resource :profile
resources :supports do
post :interest
end
end
是否有办法将资源users/user\u id
更改为users/firstname
?为此,您可以在用户模型中使用或定义to\u param
方法
def to_param
"#{name}"
end
虽然这样做有效,但有没有办法改变路由。rb?@Sylar如果你使用
来设置参数
确保每个名称都是唯一的。友好的id
gem是一个不错的选择(它会生成唯一的slug).Upvoted。我使用的是twitter身份验证,所以他们的用户名是唯一的。@Sylar那么你就可以走了。而且,直接在模型中处理这个问题比在路由定义中处理要好得多。你为什么要这样做?因为我用twitter用户名
替换用户id
,并使用用户查找(参数[:twitter_用户名]