0

我正在使用带有 rails 3.2.1 的 devise 和 cancan,我遇到了一个不寻常的问题,我知道可以重构和简化,但经过大量搜索后,我被卡住了。

我在用户模型中有 first_name 和 last_name 字段,并使用以下代码在 users/show.html.erb 视图中成功显示了用户的全名:

<%= @user.first_name + " " + @user.last_name %>

我成功地在标题中显示了指向用户显示页面的链接,使用:

<% if user_signed_in? %>
  <li><%= link_to @user.first_name + " " + @user.last_name, current_user %></li>
<% end %>

但是,我无法弄清楚这一点,在处理应用程序的另一部分之后,标题开始给我一个未定义的方法错误消息......

无论如何,我知道有一种更好的方法来定义和使用用户名,我已经尝试了一些方法,例如向用户模型添加名称方法,但正如你从这篇文章中可以清楚地看出的那样,我是一个初学者并且无法完成这项工作。

如果您对如何在这样的应用程序中最好地使用用户名有任何想法,请告诉我。

4

1 回答 1

3

你在哪里定义@user?我敢打赌它在您的 UsersController 显示操作中,这意味着它仅在该操作中为您的标题定义。

尝试用以下代码替换您的标头代码:

<% if user_signed_in? %>
  <li><%= link_to current_user.first_name + " " + current_user.last_name, current_user %></li>
<% end %>

诀窍是当用户登录时,Devisecurrent_user始终可用。您不必担心设置@user实例变量。

于 2012-04-12T14:20:43.300 回答