Родос неопределенный метод `[]' для nil:NilClass

Я делаю родосское приложение для iPhone. Я получаю исключение "неопределенный метод `[]' для nil:NilClass" при выполнении заданной строки кода

url_string = url_for(:action => :my_callback)

«MyScanner ‹ Scanner» — это мой класс, а класс Scanner объявлен как «Scanner ‹ Rho::RhoController». Для сканера ‹ Rho::RhoController я добавил «требовать 'rho/rhocontroller'» и «требовать 'helpers/browser_helper'», а также включил «включить BrowserHelper». Я новичок на Родосе. Любой может помочь найти причину этого исключения.

Заранее спасибо :)


person Augustine P A    schedule 25.06.2013    source источник
comment
Попробуйте использовать имя, отличное от Scanner. В RhoElements уже есть API с таким именем, и это может вызвать проблему, которую вы видите.   -  person pfmaggi    schedule 14.09.2013


Ответы (1)


Я также начинаю с Родоса, и это может сильно запутать. Рассмотрим следующее:

Вы обнаружите, что модуль Rho состоит из нескольких файлов в папке rho, поэтому вы видите включения, такие как rho/rhocontroller, необходимое включение для подкласса Rho::RhoController.

helpers/browser_helper вы не будете здесь, потому что он содержит только методы решения проблем с платформой. url_for на самом деле определен в rho/viewhelpers, который уже включен в rho/rhocontroller, а это означает, что вы должны иметь возможность использовать его по умолчанию в подклассах RhoController.

Без дополнительного кода невозможно определить, в чем именно заключается ваша проблема, но, вероятно, она как-то связана с метапрограммированием, особенностью Ruby, которая делает его САМЫМ удивительным языком, но также и очень сложным. Я все еще изучаю, как все это работает, и еще долго буду.

Возможно, эти статьи помогут решить вашу проблему:

person Steve Benner    schedule 15.08.2013
comment
Спасибо, Стив. Пройдусь по статьям и надеюсь, что смогу найти причину этого. - person Augustine P A; 19.08.2013
comment
Я также могу упомянуть, что в последнее время я несколько раз сталкивался с этой ошибкой (она очень распространена), когда я неправильно установил переменную. Например, если у вас в коде ERB есть что-то вроде @posts.each и нет сообщений, вы получите эту ошибку, если вы не инициализировали переменную в своем контроллере. Итак, нужно обратить пристальное внимание на логику, окружающую переменные экземпляра. Надеюсь, что это полезно. - person Steve Benner; 03.09.2013