Rails,Devise,在个人资料中显示用户名

时间:2014-12-30 21:59:13

标签: ruby-on-rails ruby devise

我正在使用带有Devise的Rails 4并创建了一个配置文件页面,我想在其中显示该特定用户的ID和用户名。但是只要我想访问用户数据,我就会收到错误消息: nil的未定义方法`id':NilClass

我的users_controller.rb:

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

我的观点

<%= @user.id %>

路线

get ':username' => 'users#profile'

怎么了?

感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分:3)

Devise创建一个方法current_user,您可以在控制器和视图上下文中引用它 - 它具有User模型的所有方法。所以,只需做

current_user.username

<%= current_user.id %>

不需要路线,不需要取景器 - 所有都是为你设计的。

答案 1 :(得分:0)

如果您为/:用户名设置路线(如http://example.com/username中所示)以显示用户个人资料,则需要修改您在控制器中获取个人资料的方式。

def action
  @user = User.find_by(username: params[:username])
end

在此视图中,您应该能够访问该用户的各个方面。

@user.username -> username
@user.id -> id of @user

您收到undefined method 'id' for nil:NilClass的原因是因为您的操作无法找到指定用户名参数的用户,因此要尝试跟踪此问题,请使用rails console与您进行互动数据库并尝试查找代码在从路由接收参数时尝试查找的同一用户。

答案 2 :(得分:0)

供将来参考。我正在解决类似的问题,并尝试了以上所有,我没有任何运气。我想我会在这里添加它,以防其他人遇到相同或类似的问题。

Localhost - 根据数据库的结构,有两种方法可以查看用户配置文件。

1)localhost:3000 / usersname

2)localhost:3000 / users / 1(或localhost:3000 / users / usersname) - &gt;这使用“user_id”。

在“视图”中,Show.html.erb文件:

<%= @user.name %>