我想做这个:
site.com/用户名
而不是这个:
site.com/users/1
设置路由和用户控制器的最佳方法是什么?
我假设这是一个 GET 请求。所以它会像:
路线定义
get '/:username', to: 'users#show', as: 'user_by_name'
用途:
link_to 'Show', user_by_name_path(user.username)
user
inuser.username
应替换为实际变量。
更多在官方指南中的非资源路线。
如果你想从users
资源中覆盖它,你可以关注这个线程https://stackoverflow.com/a/18261912/383912。您需要使用 'member' 而不是 'collection' 作为show
路由。
您可以将路径设置为路径:
resources :users, path: '', only: [ :show, :edit, :update, :destroy ]
:only
如果您想要索引页面并创建用户映射到的操作,您可以省略/
。
签出friendly_id
以轻松使用用户名作为路由中的 id。
确保/about
在用户路由之前定义其他路由,否则它们将被解释为用户 ID。
您可能想看看:如何为 Rails 应用程序创建应用程序范围的 slug 路由?
如果您要路由到domain.com/:username
并拥有其他内容类型,您将需要一种方法来处理它们而不会发生冲突。