2013-04-13 119 views
0

我有一個提交者模型其中有一個電子郵件列。我也有一個電子郵件模型,其中有電子郵件後綴列中。電子郵件模型和電子郵件列在Rails衝突

我的問題(我相信)是因爲我的提交者模型有一個電子郵件列,當我嘗試使用submitter.email.suffix在我的電子郵件模型中顯示後綴時,表示沒有定義的方法。

任何想法我可以在這裏做什麼?

查看:

<% @submitters.each do |submitter| %> <tr> 
<td><%= submitter.school.name %></td> 
<td><%= submitter.first_name %></td> 
<td><%= submitter.last_name %></td> 
<td><%= submitter.email %><%= submitter.email.suffix %></td> 
<td><%= link_to 'Show', submitter %></td> 
<td><%= link_to 'Edit', edit_submitter_path(submitter) %></td> 
<td><%= link_to 'Destroy', submitter, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
</tr> 
<% end %> 
</table> 

作爲一個方面說明我有顯示郵件的ID沒有問題的後綴,但顯然我試圖顯示而不是實際的後綴:

<td><%= submitter.email %><%= submitter.email_suffix_id %></td> 

發佈.rb有一個has many :emailsEmail.rb有一個belongs_to :submitter關聯。

+0

是'suffix'電子郵件的方法嗎? – ted

+0

'suffix'是我的**電子郵件**模型中的一個列,所以我認爲它是.. – Devin

回答

0

所以我們來分解一下。你說你正在試圖做

submitter.email.suffix 

然而,你的模型沒有這樣的:email關聯。相反,你說你的Submitter模型

has_many :emails 

這意味着:

  1. 要打印一些Submitter實例submitter:email屬性,使用

    puts submitter.email 
    
  2. 要打印:prefix每個Email實例的相關屬性通過您的has_many協會submitter,你需要遍歷他們

    submitter.emails.each do |e| 
        puts e.suffix 
    done 
    

它仍然是相當不清楚究竟你在做什麼試圖做,但希望這清除了你的結束有些混亂; 到目前爲止,沒有方法命名衝突

+0

這給了我以前的相同錯誤,很奇怪。感謝您的建議 – Devin

+0

更具體地說,錯誤是「Devin.ODaniel」的'undefined method'後綴':String',其中'Devin.ODaniel'是存儲在我的':email'屬性中的字符串。所以它將'submitter.email.suffix'中的* email *視爲一種方法,而不是試圖訪問我的電子郵件模型。這有幫助嗎? – Devin

+0

我認爲你無視我的建議。 'submitter.email'返回一個字符串,比如''Devin.ODaniel「',**不是**電子郵件模型。你會得到'undefined method'後綴'error',因爲**你在'String'實例上調用'suffix',而不是'Email' **實例。你已經說過你的'提交者'**'has_many:emails' **。如果你想在'Submitter'的相關'Email'實例*之一調用'suffix'(例如,集合中的第一個)*,你可以執行'submitter.emails.first.suffix'。 – deefour

0

submitter.email.suffix將不起作用,因爲它會返回提交者「email」,這是一個字符串,而不是Email實例。

submitter.emails.each(&:suffix) 

應該工作。 submitter.emails將返回一個電子郵件的實例,他們確實有suffix方法(根據你的話)。

+0

這也返回相同的錯誤。也許我有我的關聯錯誤? – Devin

+0

更具體地說,錯誤是「Devin.ODaniel」的'undefined method'後綴':String',其中'Devin.ODaniel'是存儲在我的':email'屬性中的字符串。所以它將'submitter.email.suffix'中的* email *視爲一種方法,而不是試圖訪問我的電子郵件模型。這有幫助嗎? – Devin

+0

@Devin,你能展示你的提交者模型嗎? – ted

相關問題