Вы путаете методы и переменные. Когда вы делаете
def ch
...
end
вы определяете метод, и этот метод возвращает последнее, что было оценено в нем. В этом случае последнее, что вы сделали в методе:
@ch[0][1] = "Option 2"
, что оценивается как "Option 2"
. Поэтому, когда вы вызываете ваш метод ch
, он вернет "Option 2"
. Вот почему
logger.debug ch
журналы "Option 2"
.
Теперь, внутри вашего метода ch
вы создаете переменную экземпляра @ch
. Чтобы записать значения так, как вы хотели, вам нужно изменить код регистрации следующим образом:
logger.debug @ch
logger.debug @ch[0]
logger.debug @ch[1]
logger.debug @ch[0][0]
logger.debug @ch[0][1]
Но, чтобы это работало, вы должны убедиться, что код, который создает переменную экземпляра @ch
, был выполнен до выполнения метода test
. Один из способов сделать это - вызвать метод ch
, используя before_filter
:
class YourControllerClassName
before_filter :ch