我正在使用设计和cancan与rails 3.2.1并且我遇到了一个我知道可以重构和简化的异常问题,但经过多次搜索后,我被卡住了。
我在用户模型中有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 %>
但是,我无法弄清楚这一点,在处理应用程序的另一部分后,标题开始给我一个未定义的方法错误消息...
无论如何,我知道有一个更好的方法来定义和使用用户名,我已经尝试了一些东西,比如为用户模型添加名称方法,但是你可以从这篇文章中清楚地看出来,我是初学者,但未能做到这一点。
如果您对如何在这样的应用程序中最好地使用用户名有任何想法,请告诉我。
答案 0 :(得分:3)
您在哪里定义@user
?我愿意打赌,这是在你的UsersController show动作中,这意味着它仅在该动作中为你的标题定义。
尝试用以下代码替换标题代码:
<% if user_signed_in? %>
<li><%= link_to current_user.first_name + " " + current_user.last_name, current_user %></li>
<% end %>
诀窍在于,当用户登录时,Devise会使current_user
始终可用。您不必担心设置@user
实例变量。