Rails - 设计 - 用户个人资料网址,用户名为

时间:2013-05-05 17:19:18

标签: ruby-on-rails ruby devise

我想通过网址访问用户个人资料:root/user/(username)

截至目前,我已与root/user/(id)合作,但我希望它更友好,并且可以与网址中的用户名共享。

这就是我目前设置的方式

#user_controller.rb

class UserController < ApplicationController
  def profile
    @user = User.find(params[:id])
  end
end


#routes.rb

match 'user/:id' => 'user#profile'


#profile.html.erb

<h1><%= @user.firstname %>'s Profile</h1>

基本上我要做的是为:id更改:username。我已经从设计中创建了用户模型中的用户名,所以我知道它正在运行。但是现在当我尝试在URL中获取用户名时,我得到Couldn't find User with id=username

2 个答案:

答案 0 :(得分:6)

更改您的控制器

class UserController < ApplicationController
  def profile
    @user = User.find_by_username(params[:username])
  end
end

然后路线

match 'user/:username' => 'user#profile'

答案 1 :(得分:4)

试试friendly_id。无需控制器或模型级别的任何黑客。