隐藏url栏中的用户ID

在我的rails应用程序中,我目前有一大堆用户,每个用户都有一个注册用户ID。

如果我进入我的用户索引并单击用户显示页面,我会得到以下示例标题。

本地主机:3000 /用户/ 3

现在我不喜欢这个,因为它很容易让人们跳过标题中的用户。

我将如何进行以下操作,以便它显示user.username字段,例如

本地主机:3000 /用户/ adamwest

您可以在User模型上定义to_param方法。

 class User ... def to_param name end ... end 

然后,每个生成的URL将具有name而不是id作为用户标识符。

 sid = User.new :name => 'sid' user_path(sid) #=> "/users/sid" 

当然,在控制器中,您必须按名称查找用户。

 class UsersController ... def show @user = User.find_by_name(params[:id]) end ... end 

我还建议你看看friendly_id gem。

FriendlyId是ActiveRecord的段塞和永久插件的“瑞士军队推土机”。 它允许您创建漂亮的URL并使用人性化的字符串,就像它们是ActiveRecord模型的数字ID一样。