查看不显示Ruby On Rails中关联表的数据

时间:2015-12-02 12:59:28

标签: ruby-on-rails ruby

我对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>

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

<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>

答案 2 :(得分:0)

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

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

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

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

<%= email_address.column_name %>