带用户名的用户路径

User path with username

为了显示用户的个人资料,我使用了他们的 ID。在控制器中:

@user = User.find(params[:id])

在路线中:

get ':id' => 'users#show'

但现在我尝试使用用户名的新方法:

get ':username' => 'users#show' #route

@user = User.find_by(username: params[:username]) #controller

当我使用 /username 进入用户的个人资料时 我看到错误:undefined method posts。在控制器中,我得到了用户的帖子。但现在它不起作用。请告诉我为什么? 我还有一个问题。当我转到 /users/posts 或其他内容时,我的应用认为我转到了 uset 的页面。如何解决?如果用户使用例如用户名注册,该怎么办:"users"?

Artyom 你也可以在上面使用 friendly-id gem if you want to make this process easier on you. Ryan Bates has a Railscast

这样您就可以在 url:

中使用字符串作为 ID(即您的 username
http://localhost:3000/articles/hello-world

如果您有任何问题,请告诉我,

-戴夫