Rails 3:永久公开个人资料

don*_*ald 2 rubygems ruby-on-rails devise ruby-on-rails-3

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

如果我使用设计,我可以实现吗?

谢谢

编辑:我的节目控制器:

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

don*_*ngg 8

获取用户名到URL

你能行的.Devise只是一种身份验证解决方案.您可以按照自己的意愿行事.以下是获取此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
Run Code Online (Sandbox Code Playgroud)

然后,在您的控制器中,执行以下操作:

@user = User.find_by_user_name(params[:id])
Run Code Online (Sandbox Code Playgroud)

帮助者喜欢user_path(@user)使用该to_param方法生成URL.

从URL中删除控制器

至于改变路线从/user/:id/:id.像这样的东西会起作用:

match '/:id' => 'users#show', :as => :user
Run Code Online (Sandbox Code Playgroud)

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

但是你可以从阅读这些内容中受益:

如何在Rails应用程序中实现虚荣URL?

如何在rails中实现"短"嵌套虚荣URL?

当你这样做时,有很多事情要考虑.