2012-04-12 49 views
0

我正在使用devise和cancan with rails 3.2.1,并且我遇到了一个不寻常的问题,我知道这个问题可以重构和简化,但经过大量搜索后,我被卡住了。如何使用姓氏加入并显示first_name?

我在用户模式FIRST_NAME和LAST_NAME字段,并使用此代码成功显示用户的全名中的用户/ 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

编辑:当我浏览users/show.html.erb时,标题正常工作,但在浏览主页时发生错误 – 2012-04-12 13:55:14

+0

错误是什么?你能把它添加到你的问题吗? – Christian 2012-04-12 14:02:22

回答

3

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

尝试用这种替代你的头代码:

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

的诀窍是设计使current_user总是可用的,当用户已登录,您不必担心设置一个@user实例变量。

+0

谢谢。另外,有没有办法重构,所以我可以使用current_user.name? – 2012-04-12 16:27:53

+0

'current_user'是你的'User'模型的一个实例。因此,只需在名为'name'的模型中添加一个返回串联字符串的方法,例如'def name; first_name +''+ last_name;结束' – 2012-04-12 16:31:41

+1

感谢您指出复选标记!我保持投票,但被系统阻止,直到我得到15分。 – 2012-04-12 16:56:09

相关问题