要显示用户的个人资料,我使用了他们的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
或其他内容时,我的应用会认为,我会去使用该页面。怎么解决?该怎么办,如果用户注册,例如,用户名:"用户"?
答案 0 :(得分:1)
Artyom如果你想让这个过程更容易,你可以使用friendly-id gem。 Ryan Bates也有Railscast。
这样你就可以在网址中使用字符串作为id(即你的username
):
http://localhost:3000/articles/hello-world
如果您有任何问题,请告诉我,
-Dave