0

我有一个提交者模型,它有一个电子邮件列。我还有一个电子邮件模型,其中包含电子邮件后缀列。

我的问题(我相信)是因为我的提交者模型有一个电子邮件列,当我尝试使用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>

Submitter.rb有一个has many :emailsEmail.rb有一个belongs_to :submitter关联。

4

2 回答 2

0

所以让我们分解一下。你说你想做

submitter.email.suffix

但是,您的模型没有这样的:email关联。相反,您已经声明您的Submitter模型具有

has_many :emails

这意味着:

  1. 要在某个实例上打印:email属性,请使用Submittersubmitter

    puts submitter.email
    
  2. 要打印与您的关联相关的每个实例的:prefix属性,您需要遍历它们Emailsubmitterhas_many

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

目前还不清楚你到底想做什么,但希望这能消除你的一些困惑;到目前为止没有方法命名冲突

于 2013-04-13T19:04:26.447 回答
0

submitter.email.suffix不起作用,因为它返回 Submitter "email" 这是一个字符串,而不是 Email 实例。

submitter.emails.each(&:suffix)

应该管用。submitter.emails将返回一个电子邮件的实例,它们确实有suffix方法(根据你的话)。

于 2013-04-13T21:22:38.833 回答