隐藏网址栏中的用户ID

时间:2012-03-08 18:42:34

标签: ruby-on-rails header

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

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

localhost:3000 / users / 3

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

我将如何执行以下操作,以便显示user.username字段,例如<。p>

本地主机:3000 /用户/ adamwest

1 个答案:

答案 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模型。