неопределенный метод "уменьшить" - PullRequest
1 голос
/ 29 ноября 2009

Так что в моем локальном приложении все нормально.

Оба работают на Ruby 1.8.7 и Rails 2.3.5, однако мое развернутое приложение получает следующую ошибку.

ActionView::TemplateError (undefined method `reduce' for #<Class:0x7fbbd034d760>)

Единственное, о чем я могу подумать, это ОС, я работаю над OS X и развертываю в Linux.

Хотя на самом деле этого не может быть. Не могу найти что-нибудь онлайн, когда дело доходит до reduce, работающего по-другому.

Есть идеи о том, как я могу это отладить?

Обновление

Из любопытства я обновил гем ActiveSupport до 2.3.5 (activesupport-2.3.5), и это, похоже, не сработало.

Это строка в представлении, которая получает ошибку:

<%= quote.quote_line_items.reduce(0) {|sum, item| sum + item[:list_price].to_f } %>

Ответы [ 3 ]

3 голосов
/ 29 ноября 2009

Проверьте версию развертывания ruby. уменьшение не было добавлено в Enumerable до 1.8.7. Вы также можете попробовать использовать инъекцию. Это то же самое, что и Reduce, только с менее очевидным названием.

1 голос
/ 29 ноября 2009

Если вы хотите запустить несколько версий Ruby или просто хотите опробовать его на разных версиях, чтобы увидеть, с какими перерывами вы можете попробовать rvm.

sudo gem install rvm
rvm install 1.8.7
rvm install 1.9.1
rvm use 1.9.1

Это установит ruby ​​по умолчанию равным 1.9.1 для ruby ​​и всех связанных с ruby ​​программ, таких как irb. Тогда вы можете легко определить, что это - просто 1.8.6 -> 1.8.7 или что-то большее.

Очень удобно, когда ваш сервер заблокирован в 1.8.6, но вы хотите увидеть, что произойдет, когда вы перейдете на 1.8.7 или даже 1.9.

1 голос
/ 29 ноября 2009

reduce является синонимом inject. Так что вы должны просто изменить его на inject

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