Когда дело доходит до создания пользовательской знаковой страницы, это не имеет ничего общего с вашим контроллером, это связано с доступом к вещам в вашем представлении через помощник вспомогательных методов. Вы хотите добавить их в файл application_helper.rb. Существует обзор метода здесь:
https://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app
В двух словах, вы в принципе хотите добавить это ваш application_helper.rb
def resource_name
:user
end
def resource
@resource ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
Я использовал эту кучу раз во всех мои проекты для создания пользовательских знаков в формах на панели навигации, когда я использую twitter bootstrap. Он отлично работает и не требует, чтобы вы меняли какой-либо другой код в другом месте.
Спасибо, что сделал трюк. Как правило, лучше всего сохранить его в помощнике приложения или отдельном помощнике проверки подлинности? –
Вам нужно поместить его в 'application_helper.rb', так как он будет на панели навигации макета, и он может появиться в любом из представлений вашего контроллера. Только вспомогательные методы, которые имеют значение для конкретного контроллера, должны находиться в вспомогательном файле этого контроллера. Вот почему вы получили ошибку, в первую очередь, у вспомогательного файла devise есть те, что есть, и когда вы вызываете эти методы вне своего контроллера, он не знает, какие методы вы говорите. Короче говоря, если вам нужно, чтобы он был доступен везде, поместите его в application_helper.rb, иначе просто поместите его в вспомогательный файл этого контроллера. –
Я знаю, что этот вопрос неактивен уже 2 года. Но я столкнулся с такой же проблемой доступа к вспомогательным ресурсам ** devise's **. Дело в том, что у меня есть более одного ресурса, в частности, для клиента и для администратора. Как я могу достичь этого, учитывая мое дело? –