Что ж, благодаря помощи Кайла в комментариях к моему вопросу, я напишу правильный ответ на ошибку этого новичка.
Вместо того, чтобы смотреть на мою собственную версию Devise для переопределения контроллера,Я просто смотрел на репозиторий Devise's Github.Поскольку контроллер, который я пытался переопределить, имел изменения между моей версией и последней зафиксированной, вспомогательный метод, который я пытался использовать, просто не был определен в моей версии ...
Как указано Кайлом, вы можете использовать bundle open devise
, чтобы посмотреть на код драгоценного камня, который вы на самом деле используете, или вы можете посмотреть его номер версии с помощью gem list devise
и найти код для этого выпуска на Github (для Devise они устанавливают теги дляв каждом выпуске, чтобы можно было просмотреть код для выпуска 1.4.9, выбрав соответствующий тег).
Сделав это, я бы вместо этого переопределил метод create
моего контроллера следующим кодом:
def create
self.resource = resource_class.send_confirmation_instructions(params[resource_name])
if successful_and_sane?(resource)
set_flash_message(:notice, :send_instructions) if is_navigational_format?
respond_with({}, :location => after_resending_confirmation_instructions_path_for(resource_name))
else
respond_with_navigational(resource){ render_with_scope :new }
end
end
, который использует successful_and_sane?
, а не successfully_sent?
...
Чтобы завершить этот ответ, может быть лучший способ добавить флэш-сообщение к этому методу, чем его переопределение.jarrad рекомендует использовать around_filter
, но я пока не могу заставить его работать, и я не уверен, что смогу изменить отображаемое представление после того, как получу его из метода filter ... Комментарии приветствуются!