Я пытаюсь переопределить контроллер Devise, чтобы внести незначительные изменения, например, добавив флэш-сообщение при запросе электронной почты для подтверждения незарегистрированного адреса электронной почты.Проблемы с переопределением Контроллеры отладки
Я попытался переопределить Devise::ConfirmationsController
1 таким образом:
# app/controllers/confirmations_controller.rb
class ConfirmationsController < Devise::ConfirmationsController
include Devise::Controllers::InternalHelpers # tried to add this, no success
def create
self.resource = resource_class.send_confirmation_instructions(params[resource_name])
if successfully_sent?(resource)
respond_with({}, :location => after_resending_confirmation_instructions_path_for(resource_name))
else
respond_with(resource)
end
end
end
Я думаю, что я правильно добавил маршрут:
devise_for :users, :controllers => { :confirmations => "confirmations" }
Мой метод управления вызывается, однако он вызывает это исключение:
NoMethodError in ConfirmationsController#create
undefined method `successfully_sent?' for #<ConfirmationsController:0x007fa49e229030>
В моем переопределенном контроллере я просто скопировал t он код Devise:: ConfirmationsController#create
, который сам называет successfully_sent?(resource)
Метод successfully_sent?
определяется в InternalHelpers
2, поэтому я пытался добавить include Devise::Controllers::InternalHelpers
Это не первый раз, когда я пытаюсь переопределить контроллер завещать, и это это не первый раз, когда я терплю неудачу. Мне всегда удавалось обходное решение, но я хотел бы понять, что мне не хватает ... Спасибо заранее за вашу помощь!
[EDIT] Разрабатывают в версии 1.4.9 Rails является 3.0.10
Какую версию Devise вы используете? Вы действительно скопировали код, используя «bundle open devise» (или эквивалент) из версии Devise, которую вы установили, или просто откуда-то в Интернете? Я не вижу success_sent? определенную в моей версии Devise. – Kyle
Проверили маршруты, используя рейк-маршруты –
@Kyle: Действительно, это ошибка моего новичка! Я смотрел последнюю последнюю версию на Github, которая не та, которую я использую ... Я отвечу на вопрос благодаря вашей помощи, поэтому ... спасибо! – rchampourlier