回答

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的**資源助手的相同問題。問題是我擁有多個資源,特別是一個用於客戶,另一個用於管理員。鑑於我的情況,我怎麼能做到這一點? –

相關問題