Array.count在本地工作正常但在heroku上断开

时间:2010-08-27 04:32:45

标签: ruby-on-rails arrays activerecord count heroku

现在,如果我转到我所拥有的模型的索引操作,如果数据库中没有现有记录,我不会显示rails为我生成的基本数据表。我做了类似的事情:

<% if @my_records.count > 0 %>
<table>
  <tr>
    <th>...</th>
    <th>...</th>
    <th>...</th>
    <th>etc</th>
  </tr>
  <% @my_records.each do |my_record| %>
  <tr>
    <td><%=h my_record.etc %></td>
    <td><%=h my_record.etc %></td>
    <td><%=h my_record.etc %></td>
    <td><%=h my_record.etc %></td>
  </tr>
  <% end %>
</table>
<% end %>

这适用于本地。但是,当我将我的应用程序推送到heroku时,这会导致500错误,并且日志显示: ActionView::TemplateError (undefined method 'count' for []:Array) on line ...

所以我将其更改为.length并且工作正常。谁能告诉我为什么会这样?有人告诉我,这些都是多余的,导轨摆脱.count但我的理解是.length是一个Array函数,告诉你Array中有多少项.count是一种ActiveRecord方法,用于确定数组中有多少项是数据库中的实际记录。

任何人都可以为我阐明这一点吗?

1 个答案:

答案 0 :(得分:3)

这是红宝石问题,而不是铁轨。在本地你可能有1.8.7,而heroku有1.8.6。 1.8.7中引入了Enumerable#count方法:比较http://ruby-doc.org/core-1.8.6/classes/Enumerable.htmlhttp://ruby-doc.org/core-1.8.7/classes/Enumerable.html