2011-01-14 3 views
2

Итак, я понял, что мне нужно изменить мой config.load_paths к config.autoload_paths, но когда я сделал это, я начинаю видеть это исключение:Rails 3 autoload_paths против Rails 2 load_paths

Expected /path/to/myapp/app/helpers/controllers/my_helper.rb to define Controllers::MyHelper 

В Rails 2, он никогда не жаловался о папке помощников/контроллеров, но теперь кажется, что он ожидает модуль с именами. Могу ли я переименовать всех моих помощников, или есть ли другой способ, которым это может работать? У меня так много помощников, что я использую помощники/модели помощников/взглядов и помощников/контроллеров, чтобы все они были организованы.

Заранее благодарен!

+0

Когда я переименовал их в «Контроллеры :: MyHelper», он жаловался, что он ожидал «MyHelper» lol. Есть ли способ организовать помощников в Rails 3? – a10s

+1

Какие помощники вы используете в своих контроллерах? Обычно помощники относятся к представлениям. Если вам нужна общая функциональность для контроллеров, вы либо включаете его в свой ApplicationController, чтобы ваши контроллеры наследовали его, либо хранилище в модуле или что-то в lib/и включали его. –

ответ

0

Соглашения о присвоении имен в Rails 3 гораздо более строгие, чем в Rails 2 по соображениям производительности. Rails 3 ожидает, что файловая структура будет напрямую соответствовать иерархии классов.

Если вы хотите запустить приложение в Rails 3, я бы предложил удалить каталог помощников или добавить Controllers:: в начало каждого объявления класса.

+0

К сожалению, это неверно, это на самом деле вещь Rails 3. –

+0

Спасибо Асфанд, я обновил ответ соответственно. –

0

Rails 3 ожидает, что ваши классы будут размещены в соответствии с именем файла и иерархией каталогов, поэтому вам нужно будет переименовать ваш помощник в Controllers::MyHelper.

Смежные вопросы