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

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

本地主机:3000 / users / 3

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

我将如何执行以下操作,以使其显示user.username字段,例如

本地主机:3000 / users / adamwest

最佳答案

您可以在用户模型上定义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插件。它可以让您创建漂亮的网址,
使用人类友好的字符串,就好像它们是数字ID
ActiveRecord模型。

关于ruby-on-rails - 在网址栏中隐藏用户ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9623017/

10-11 22:37
查看更多