我想通过网址访问用户个人资料: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
。
答案 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
。无需控制器或模型级别的任何黑客。