3

我想从 URL 访问用户配置文件:root/user/(username)

到目前为止,我可以使用它,root/user/(id)但我希望它对用户更友好,并且可以与 URL 中的用户名共享。

这就是我目前的设置方式

#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

4

2 回答 2

6

更改您的控制器

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

然后是路线

match 'user/:username' => 'user#profile'
于 2013-05-05T17:22:05.370 回答
4

试试friendly_id。无需在控制器或模型级别进行任何黑客攻击。

于 2013-05-05T17:56:38.893 回答