Ошибка «Невозможно перенаправить на ноль» после добавления поля для создания представления регистрации - PullRequest
3 голосов
/ 23 ноября 2011

После добавления этой строки в файл devise / registrations / new.html.haml (просмотр):

  %div
    = f.label :account_type
    %br/
    = f.select(:account_type, [["Usertype1","usertype1"],["Usertype2","usertype2"]], {:selected => nil, :prompt => 'Pick One'})

Я получаю следующую ошибку после нажатия на ссылку подтверждения в электронном письме с подтверждением:

ActionController::ActionControllerError in Devise::ConfirmationsController#show

Cannot redirect to nil!

Это происходит только тогда, когда я выбираю Usertype2 при регистрации.Я также сделал account_type attr_accessible.Кажется, что account_type получает назначение (я проверил в консоли rails), и в журналах разработки больше нет никакой информации.

Я думаю, что это строка в контроллере подтверждений устройства, где происходит ошибка:

respond_with_navigational(resource){ redirect_to after_confirmation_path_for(resource_name, resource) }

Кроме того, учетная запись подтверждается, но при попытке войти в систему я получаю следующее:

undefined method `user_url' for #<Devise::SessionsController:0x9d1659c>

, которое находится в действии create контроллера сессий devise.

Любая помощь будет оценена.Спасибо!

Джон

1 Ответ

5 голосов
/ 24 декабря 2011

Две ошибки, о которых вы упомянули, одинаковы, по сути, при успешном входе в систему Devise не может определить, куда вас перенаправить.Эта проблема часто возникает, когда у вас несколько моделей или вы пытаетесь настроить пользовательское перенаправление (после входа в систему) в файле маршрутов.

Попробуйте определить путь в ApplicationController.

Разработайте документы, напримерчто метод after_sign_in_path_for принимает фактический объект модели (т. е. входящую модель)

def after_sign_in_path_for(resource)
    signed_in_path_for_user
end

Примечание: вы можете сделать то же самое для нескольких путей / переменных Devise (переопределить их).Также для получения дополнительной информации о том, как сделать это для нескольких моделей Devise в одном приложении, вы можете посмотреть этот вопрос и его ответ.

...