1
我使用的是Devise 3.4.0,Rails 4.1.8。基於設計認證狀態的條件顯示
一旦用戶點擊sessions#new
,放入他們的用戶名和密碼,然後單擊「登錄」按鈕,將POSTS設置爲/users/sign_in
。如果認證成功,用戶將被重定向。但是,如果身份驗證失敗,我需要在視圖中做一些改變。基本上,我們有兩種類型的賬戶:傳統和現代。
現代賬戶沒有問題:它們來自我們的Rails系統,所以我們知道糟糕的登錄是一個糟糕的登錄。他們肯定有一個帳戶,他們只是使用了錯誤的密碼。我想在閃光消息(我也在使用)之外顯示其他幫助文字。
但是,我們已將舊帳戶導入到我們的系統中;我們只是沒有給他們分配密碼。如果他們嘗試使用舊帳戶登錄,我想顯示相同的Flash消息,但不同於Flash消息以外的幫助文本。
我正在尋找像這樣的東西(如果邏輯在視圖中,堅持一分鐘)。最後看兩個條件?
<div class="login_form">
<div class="flash">
<%= render partial: 'layouts/flash_messages', locals: { flash_messages: flash } %>
</div>
<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<%= f.email_field :email, autofocus: true, placeholder: "Email" %>
<%= f.password_field :password, placeholder: "Password" %>
<%= f.button "Sign in" %>
<% end %>
<% if gave_wrong_password? %>
<a href="/def456">Reset your password here!</a>
<% elsif no_account_exists? %>
<a href="/abc123">Create a new account here!</a>
<% end %>
</div>
基本上,我需要設計(或監獄長)告訴我爲什麼有些事情失敗了。 Devise控制器中是否有可用於獲取該信息的內容?
感謝色器件模型!幾乎在那裏:這給我一種方式檢查用戶是否存在或是一個遺留用戶(我可以在'before_signin'中執行查詢並設置一個實例變量,我可以在我的視圖中使用),但是如何判斷一次認證嘗試由於密碼不正確而失敗? – alaina 2014-12-19 12:04:49
我想我已經想通過檢查幾種不同的狀態來解決這個問題,而不是與守望者戰鬥。這個答案讓我開始了,所以我會接受它。再次感謝! – alaina 2014-12-20 02:26:57
謝謝,我很高興,這指出你在正確的方向 – MZaragoza 2014-12-20 04:14:42