2012-04-12 50 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

相關問題