2010-08-01 4 views
1

По какой-то причине одна из моих моделей в рельсах возвращает нуль при вызове .new. Это только проблема в контроллере. Когда я пытаюсь на консоли, он возвращает объект с атрибутами nil, как я ожидал. Я подозреваю, что проблема в моем контроллере, но я понятия не имею.ActiveRecord :: Base.new return nil

Это также происходит, когда я звоню. Опять же, я могу выполнить эти команды вручную из командной строки без проблем.

Вот код контроллера:

http://gist.github.com/502816

EDIT: Похоже, некоторые из моих других моделей действуют таким же образом. Эта проблема явно глубже, чем этот контроллер/модель. Я все еще очень новичок в рельсах, поэтому я не уверен, где искать отладить это.

EDIT2: Мой мудрый друг помог мне понять, что действие контроллера даже не называется. Тем не менее, я перед фильтром, но это не перенаправление. Так или иначе, правый контроллер найден, но соответствующее действие не вызывается.

Мой журнал сервера SAYS обрабатывается правое действие, но фактическое тело функции, похоже, не выполняется.

+0

Вы можете показать свой выход development.log? Это какие-то ошибки? –

+0

К сожалению, у меня нет журнала, который можно найти на этой секунде, но я могу обобщить как можно лучше. Он сказал, что обрабатывает правильное действие контроллера и отображает правильный шаблон, а затем он дал мне ошибку в моем шаблоне, где я попытался использовать экземпляр модели, созданный в контроллере. Ничего особо не примечательного, но я опубликую журнал как можно скорее. – RyanG

+0

Я полагаю, вы говорите, что заметили нулевое значение в представлении, в какой-то момент? Можете ли вы показать нам код просмотра, который вы используете для его отображения? Мне интересно, может быть, есть только тип, в котором вы не проходите по переменной, как вы ожидаете, или что-то в этом роде. Вы также можете просто попробовать вставить строку для вывода @event в журнал, сразу после @event = Event.new - это скажет вам, правильно ли вы установите переменную? – jasonpgignac

ответ

1

Я думаю, что ваша проблема в том, что все ваши методы EventsController объявлены частными. Частные методы нельзя назвать действиями, поэтому у вас возникают проблемы.

Попробуйте переместить частную декларацию и redirect_if_not_logged_in в конец файла, то есть после метода destroy.

Для получения дополнительной информации, как государственные/частные/защищенные работы в Ruby, это читать: http://www-users.math.umd.edu/~dcarrera/ruby/0.3/chp_04/features.html

+0

О! Ты прав. Я как-то думал, что вы можете закрыть объявления уровня доступа, как блок с концом, и я думал, что сделал это, но ни одна из этих вещей не верна. Это будет иметь смысл. – RyanG