1

在我的Rails應用我的用戶個人資料頁,我recieving錯誤:爲什麼我檢查方法是否存在後,在rails中出現未定義的方法錯誤?

undefined method `title' for nil:NilClass 

我知道那是因爲以下3行代碼:

<% if @user.profile.title %> 
    <%= @user.profile.title %> 
<% end %> 

我不明白爲什麼。因爲我使用if語句,所以不應該先檢查title是否存在,如果存在,則顯示它,如果不存在,則不應顯示它。什麼是錯的,我該如何解決它?謝謝。

回答

3

由於title是零,你不能像你一樣測試它。 嘗試:

<% if @user.profile.try(:title) @user.profile.title %> 
+2

我認爲你可以簡化爲<%= @ user.profile.try(:title )%>' –

+1

當你評論時只是做它;) – Leon

+0

幾點要注意在這裏:它不是'標題'這裏沒有,這是配置文件。其次,您的解決方案不打印出標題,@ DamienRoche的解決方案。建議編輯你的答案。 – vee

0

因爲它不正確。如果你想訪問用戶的一些參數,你必須使用直接訪問。但是,如果你想使用這個 link

3

屬於用戶模型的外觀輪廓可以這樣做:

<% if @user.profile.present? %> 
    <%= @user.profile.title %> 
<% end %> 

或者try:

<%= @user.profile.try(:name) %> 

隨着如果沒有配置文件的默認值關聯:

<%= @user.profile.try(:name) || 'No profile for this user' %> 
+0

謝謝。你的回答是正確的,但列昂尼德也是對的,並且首先回答。但我確實投了你的答案。 – Philip7899

相關問題