Array.count отлично работает локально, но ломается на героку - PullRequest
3 голосов
/ 27 августа 2010

Прямо сейчас, если я перейду к действию index имеющейся у меня модели, я не покажу базовую таблицу данных, которую 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 Ответ

3 голосов
/ 27 августа 2010

Это проблема рубина, а не рельсов. Локально у вас наверное 1.8.7, а у героку 1.8.6. Метод Enumerable#count был представлен в 1.8.7: сравните http://ruby -doc.org / core-1.8.6 / classes / Enumerable.html и http://ruby -doc.org / ядро-1.8.7 / классы / Enumerable.html .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...