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 に答える