我有一个提交者模型,其中包含电子邮件列。我还有一个电子邮件模型,其中包含电子邮件后缀列。
我的问题(我相信)是因为我的提交者模型有一个电子邮件列,当我尝试使用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 :emails
, Email.rb 有一个belongs_to :submitter
关联。
答案 0 :(得分:0)
所以让我们打破这个。你说你正在尝试
submitter.email.suffix
但是,您的模型没有此类:email
关联。相反,您已声明您的Submitter
模型已
has_many :emails
这意味着:
要在某个:email
实例Submitter
上打印submitter
属性,请使用
puts submitter.email
要通过您的:prefix
关联打印与Email
相关的每个submitter
实例的has_many
属性,您需要循环显示它们
submitter.emails.each do |e|
puts e.suffix
done
目前还不清楚你究竟在做什么尝试,但希望这会在你的结局中消除一些混乱;到目前为止,没有方法命名冲突。
答案 1 :(得分:0)
submitter.email.suffix
无效,因为它会返回提交者“email”,这是一个字符串,而不是电子邮件实例。
submitter.emails.each(&:suffix)
应该有效。 submitter.emails
将返回电子邮件的实例,并且他们有suffix
方法(根据您的说法)。