gpt4 book ai didi

ruby-on-rails - rails 3 : Permalink public profile

转载 作者:行者123 更新时间:2023-12-05 01:12:11 26 4
gpt4 key购买 nike

我有 /users/1 作为公共(public)用户配置文件(显示方法),但我想有 /user_name 而不是 /users/1

如果我使用 devise,我能做到吗?

谢谢

编辑:我的秀控:

# public profile page
def show
@user = User.find(params[:id])
end

最佳答案

获取用户名到URL

你可以的。 Devise 只是一种身份验证解决方案。您的其他 Controller 可以按您希望的方式运行。以下是获取此 URL 行为所需的步骤的概述。

  • 确保 user_name 对每个用户都是唯一的
  • 覆盖用户的to_param 方法以返回user_name
  • 更改从数据库中获取用户的方式

这将进入您的用户模型

class User < ActiveRecord::Base
devise :database_authenticatable, :confirmable, :validatable
validates_uniqueness_of :user_name

def to_param
user_name
end

end

然后,在您的 Controller 中,执行如下操作:

@user = User.find_by_user_name(params[:id])

user_path(@user) 这样的助手使用 to_param 方法来生成 URL。

从 URL 中删除 Controller

至于将路由从 /user/:id 更改为 /:id。这样的事情会起作用:

match '/:id' => 'users#show', :as => :user

这里你可以使用 user_pathuser_url 因为 :as => :user

但是您可能会从阅读这些内容中受益:

How can I implement vanity URL's in a Rails application?

How to implement "short" nested vanity urls in rails?

当您这样做时,有很多事情需要考虑。

关于ruby-on-rails - rails 3 : Permalink public profile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4565031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com