在我的rails应用程序中,我目前有一大堆用户,每个用户都有一个注册用户ID。
如果我进入我的用户索引并点击用户显示页面,我会得到以下示例标题。
localhost:3000 / users / 3
现在我不喜欢这个,因为它很容易让人们跳过标题中的用户。
我将如何执行以下操作,以便显示user.username字段,例如<。p>
本地主机:3000 /用户/ adamwest
答案 0 :(得分:9)
您可以在用户模型上定义to_param
方法。
class User
...
def to_param
name
end
...
end
然后,每个生成的网址都会以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和 使用人性化的字符串,就好像它们是数字ID一样 ActiveRecord模型。