Производственная среда Rails разрывается с циклом - PullRequest
5 голосов
/ 04 августа 2011

Если у вас есть приложение rails (3.0.9), использующее HAML, локальный сервер разработки работает нормально.Но когда я запускаю rails s -e production, моя страница выдает такую ​​ошибку:

NoMethodError: undefined method `+@' for #<String:0x00000006331098>

Ошибка говорит, что она находится на этой строке (из представления, написанного на HAML):

%tr{:class=> cycle("even","odd")}

Я не нахожу ничего о том, почему это происходит.Пожалуйста, помогите.

1 Ответ

1 голос
/ 15 августа 2011

Использует ли метод cycle какой-либо способ конкатенации строк?

Я недавно столкнулся с этой ошибкой во время проверки кода.

Код был примерно таким:

anObject.instance_method +string_var

instance_method возвращал строку, которая должна была быть добавлена ​​со значением строки, присутствующим в переменной string_var.

Изменение кода на это сработало

anObject.instance_method + string_var # Обратите внимание на пробел после +

Без пробела метод unary + вызывается для string_var, но метод unary + не определен для класса String.Отсюда исключение.

Обратите внимание, что метод unary + определен как def +@, поэтому в сообщении об исключении говорится «Метод +@ не найден».

Этот смысл проясняет:https://gist.github.com/1145457

В любом случае, в вашем случае метод cycle (не знаю, определен ли он вами или является частью гема), вероятно, выполняет некоторую конкатенацию строк без правильного пробела ИЛИ обратной трассировки исключенияне указывает на правую строку кода.

Надеюсь, это поможет.

...