如何使用last_name加入并显示first_name?

时间:2012-04-12 13:50:24

标签: ruby-on-rails-3 methods refactoring devise

我正在使用设计和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 %>

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

无论如何,我知道有一个更好的方法来定义和使用用户名,我已经尝试了一些东西,比如为用户模型添加名称方法,但是你可以从这篇文章中清楚地看出来,我是初学者,但未能做到这一点。

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

1 个答案:

答案 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实例变量。