2013-07-10 37 views
1

我有一个Rails 4应用程序与两个模型校园和统计。校园has_many统计和Stat属于校园。如何从我的index.html.erb中的连接表中访问数据?

我的问题是我可以从我的显示操作中的校园表中获取数据,但不能在我的索引操作中显示。以下是控制器的相关代码。

def index 
    @stats = Stat.all 
    end 

    def show 
    end 

这里是我的show.html.erb:

<p id="notice"><%= notice %></p> 
<p> 
    <strong>Attendance:</strong> 
    <%= @stat.attendance %> 
</p> 
<p> 
    <strong>Salvations:</strong> 
    <%= @stat.salvations %> 
</p> 
<p> 
    <strong>Visitors:</strong> 
    <%= @stat.visitors %> 
</p> 
<p> 
    <strong>Offering:</strong> 
    <%= @stat.offering %> 
</p> 
<p> 
    <strong>Campus:</strong> 
    <%= @stat.campus.name %> 
</p> 
<p> 
    <strong>Date:</strong> 
    <%= @stat.date %> 
</p> 
<%= link_to 'Edit', edit_stat_path(@stat) %> | 
<%= link_to 'Back', stats_path %> 

它的输出如下:

考勤:23

救恩:0

访问者:3

发售:5000.0

校区:雷夫尔斯托克

日期:2013年7月5日

编辑|回到

这里是我的index.html.erb的相关部分:为stat.campus.name

我NilClass:

<% @stats.each do |stat| %> 
    <tr> 
    <td><%= stat.attendance %></td> 
    <td><%= stat.salvations %></td> 
    <td><%= stat.visitors %></td> 
    <td><%= stat.offering %></td> 
    <td><%= stat.date %></td> 
    <td><%= stat.time %></td> 
    <td><%= stat.campus.name %></td> 
    <td><%= link_to 'Show', stat %></td> 
    <td><%= link_to 'Edit', edit_stat_path(stat) %></td> 
    <td><%= link_to 'Destroy', stat, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
    </tr> 
<% end %> 

输出给了我一个未定义的方法'名称”的零无法弄清楚为什么会有所不同。我究竟做错了什么?

+0

查看show中的'@ stat.campus.name'和index中的'stat.campus'。删除索引中的'stat.time'并将'stat.campus'更改为'stat.campus.name',并且您具有相同的输出。 – Hiasinho

+0

对不起,我的第一篇文章是不正确的。使用index.html.erb中的stat.campus.name它会返回一个未定义的方法错误 –

回答

1

它看起来像你有一个stat没有相关campus到你的数据库中。

要检查女巫一个是它,你可以去rails console和检查campus_id性,印刷Stat.all

如果以编程方式增加你的属性可能发生,或者你添加一个窗体,而不每一个模型属性。

如果你不希望发生这种情况,你可以在你的模型中使用validatesCheck this link

+1

当然,这是问题所在。 (击中头部侧面)。感谢您的帮助.. –

+0

不客气! – NicoSantangelo

0

首先,你是不是在表演动作初始化@stat,你可以用做:

@stat = Stat.find(params[:id]) 

其次,你必须确保@stat具有与之相关的校园。但是,由于索引没有问题,因此您的统计数据似乎与校园关联,这意味着状态有一列campus_id,该值是表campuses的有效ID。您的统计还没有校园相关

更新

阅读您的评论后,就可以显示在这些情况下,一个空字符串:

<td><%= stat.campus.try(:name) %></td> 
+0

谢谢,但问题不在于show操作。这工作正常。这是当我调用索引操作,我有一个未定义的方法错误。 –

相关问题