隐藏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一样。