视图未显示Ruby On Rails中关联表中的数据



我是Rails的新手,在显示关联表中的数据时遇到了问题

这是我的

class Candidate < ActiveRecord::Base
  has_many :emails  
end
class Email < ActiveRecord::Base
  belongs_to :candidate
end
class CandidatesController < ApplicationController 
  def index
  @candidates = Candidate.includes(:emails).all 
  end
end

在我看来index.html.erb我有

<table>
 <% @candidates.each do |candidate| %> 
  <tr> 
    <td> Name: <%= candidate.name %> </td>
     <%  candidate.emails.each do |email_address| %> 
     <td> <%= email_address %> </td>
     <% end %>    
  </tr>
 <% end %>
</table>

这是我在浏览器中得到的输出:

Name: Mohsin  #<Email:0xbd41114>
Name: Faysal  #<Email:0xbd40f0c>
Name: Adeel  #<Email:0xbd40d68>

它只显示候选人的数据,而不是相关电子邮件表中的数据,为什么?有人能帮帮我吗???我被困在这里了!

<%= email_address.email %>
or
<%= email_address.field_name %>

在您的视图代码中,您正在呈现电子邮件对象,而不是呈现电子邮件对象的字段,类似

<table>
  <% @candidates.each do |candidate| %> 
    <tr> 
      <td> Name: <%= candidate.name %> </td>
      <%  candidate.emails.each do |email_address| %> 
        <td> <%= email_address.email %> </td>
      <% end %>    
    </tr>
  <% end %> 
</table>

#<Email:0xbd41114>显示活动记录的对象。您需要从存储列email-idsemails表中指定字段名。

例如:您已将所有电子邮件ID存储在email_id列下的emails表中,然后执行以下操作:

<%  candidate.emails.each do |email_address| %> 
  <td> <%= email_address.email_id %> </td>
<% end %>

简而言之您需要指定字段名称,如:

<%= email_address.column_name %>

最新更新