3

Я пытаюсь внедрить форму знака в мой заголовок панели навигации (twitter bootstrap), но он просто говорит мне, что ресурс не является определенным методом ,Devise: как я могу получить доступ к вспомогательным методам во всех моих контроллерах?

Должен ли я каким-то образом наследовать методы вспомогательного устройства для достижения этого?

ответ

2

Когда дело доходит до создания пользовательской знаковой страницы, это не имеет ничего общего с вашим контроллером, это связано с доступом к вещам в вашем представлении через помощник вспомогательных методов. Вы хотите добавить их в файл 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. Он отлично работает и не требует, чтобы вы меняли какой-либо другой код в другом месте.

+0

Спасибо, что сделал трюк. Как правило, лучше всего сохранить его в помощнике приложения или отдельном помощнике проверки подлинности? –

+0

Вам нужно поместить его в 'application_helper.rb', так как он будет на панели навигации макета, и он может появиться в любом из представлений вашего контроллера. Только вспомогательные методы, которые имеют значение для конкретного контроллера, должны находиться в вспомогательном файле этого контроллера. Вот почему вы получили ошибку, в первую очередь, у вспомогательного файла devise есть те, что есть, и когда вы вызываете эти методы вне своего контроллера, он не знает, какие методы вы говорите. Короче говоря, если вам нужно, чтобы он был доступен везде, поместите его в application_helper.rb, иначе просто поместите его в вспомогательный файл этого контроллера. –

+0

Я знаю, что этот вопрос неактивен уже 2 года. Но я столкнулся с такой же проблемой доступа к вспомогательным ресурсам ** devise's **. Дело в том, что у меня есть более одного ресурса, в частности, для клиента и для администратора. Как я могу достичь этого, учитывая мое дело? –

Смежные вопросы