![](/img/trans.png)
[英]Ruby on Rail's Authlogic gem - password confirmation only for password reset and the edit page
[英]Using Ruby on Rail's Authlogic gem, how do I display the login form on all pages?
我完全按照本教程進行操作: http://github.com/binarylogic/authlogic_example
但是我想知道當有人未登錄時如何使登錄表單顯示在所有頁面上嗎?
我搜索了Google,並在許多論壇上找到了答案,但是我能找到的唯一解決方案要求我為每個具有登錄表單的頁面定義@user_session = UserSession.new
。
我想做的就是將表單放在application.html.erb
文件中,並且僅在人們注銷后才顯示該表單(我設法做到了)。
但是,我只想將@user_session = UserSession.new
放在一個控制器(例如ApplicationController
,因為必須將那段代碼放在每個頁面上是非常不RESTful的。 如果我將表單代碼留在application.html.erb
並且未在控制器中為頁面定義該代碼,則該頁面將給出錯誤。
我不想為每個頁面都定義它,因為如果我決定擺脫登錄表單或其他東西,必須將其從每個頁面中刪除將需要大量的工作。
簡而言之:我想將“登錄”表單放置在站點的每個頁面上,而只需要在一個控制器中放置@user_session = UserSession.new
。
謝謝。
在ApplicationController
,您可以執行以下操作:
before_filter :prepare_new_session
def prepare_new_session
@user_session = UserSession.new if current_user.blank?
end
這將為每個操作提供一個@user_session
對象(如果用戶當前未登錄)。 這樣,您可以通過將表單放置在layouts/application.html.erb
文件中來在每個頁面上包含該表單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.