0

我想做这个:

site.com/用户名

而不是这个:

site.com/users/1

设置路由和用户控制器的最佳方法是什么?

4

3 回答 3

4

我假设这是一个 GET 请求。所以它会像:

路线定义

get '/:username', to: 'users#show', as: 'user_by_name'

用途:

link_to 'Show', user_by_name_path(user.username)

userinuser.username应替换为实际变量。

更多在官方指南中的非资源路线。

如果你想从users资源中覆盖它,你可以关注这个线程https://stackoverflow.com/a/18261912/383912。您需要使用 'member' 而不是 'collection' 作为show路由。

于 2013-10-12T05:39:26.153 回答
2

您可以将路径设置为路径:

resources :users, path: '', only: [ :show, :edit, :update, :destroy ]

:only如果您想要索引页面并创建用户映射到的操作,您可以省略/

签出friendly_id以轻松使用用户名作为路由中的 id。

确保/about在用户路由之前定义其他路由,否则它们将被解释为用户 ID。

于 2013-10-12T05:39:50.483 回答
1

您可能想看看:如何为 Rails 应用程序创建应用程序范围的 slug 路由?

如果您要路由到domain.com/:username并拥有其他内容类型,您将需要一种方法来处理它们而不会发生冲突。

于 2013-10-12T11:59:15.500 回答