我試圖在我的主頁上設置一個登錄表單。我設法遵循WikiRails&Devise:覆蓋SessionsController
除了,如果登錄信息不正確,則會呈現/devise/session/new.html.erb
。 我不想那樣。我希望我的用戶被重定向到閃存郵件中的錯誤root_url
WITH。
我能夠覆蓋registrations_controller.rb
的另一個功能,但覆蓋sessions_controller.rb
給了我很多麻煩。
我想改變做我想做的事情?如果登錄正確,我仍然希望將用戶重定向到after_sign_in_path
。 原來的控制器是here
到目前爲止,我知道我必須做的是,在我的routes.rb
devise_for :users, :controllers => { :registrations => "registrations", :sessions => "sessions" }
而且我還設置了controller/sessions_controller.rb
class SessionsController < Devise::SessionsController
# GET /resource/sign_in
def new
resource = build_resource
clean_up_passwords(resource)
respond_with_navigational(resource, stub_options(resource)){ render_with_scope :new }
end
end
我有一種感覺,我必須改變render_with_scope :new
但是......怎麼樣? 與該版本,我得到的錯誤undefined method 'users_url' for #<SessionsController:0x5072c88>
好吧,我等你的寶貴幫助
PS:這post幫助了我很多關於訂閱處理錯誤。也許它會幫助登錄錯誤?
==== ====編輯
繼1RST答案的建議,我也加入到initializers/devise.rb
:
config.warden do |manager|
manager.failure_app = CustomFailure
end
當用戶沒有登錄並試圖訪問一個「限制「區域,他被重定向到root_url
,但是當登錄出現問題時,我現在有以下錯誤:
The action 'devise/sessions#new' could not be found for Devise::SessionsController
(PS:我刪除了我與會話控制器,所做的一切,並在日誌中,如果成功的作品)
=== EDIT 2 ===
在此之後Wiki重定向完美的作品但我不沒有任何錯誤通知。
而且我與顯示警報/通知閃光燈消息,如果改變任何東西
<% flash.each do |name, msg| %>
<% if msg.class == Array %>
<% msg.each do |message| %>
<%= content_tag :p, message, :id => "flash_#{name}" %>
<% end %>
<% else %>
<%= content_tag :p, msg, :id => "flash_#{name}" %>
<% end %>
<% end %>
===最後更新===
接受的答案的作品。只是不要忘記顯示flash alerts
終於來了!一個回答我永恆懷疑的問題。 – 2011-10-20 23:07:49