2012-11-28 29 views
0

與(Gemfile中)應用:用jquery-mobile設計,如何處理錯誤信息?

gem "devise", ">= 2.1.2" 
gem 'rails', '3.2.8' 
gem 'jquery_mobile_rails' 

前加入jQuery的移動,一切工作正常,當進入invalidad數據我得到了第一個錯誤信息和日誌:

Started POST "https://stackoverflow.com/users/sign_in" for 127.0.0.1 at 2012-11-28 12:01:13 -0500 
Processing by Devise::SessionsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"jLtHS2q0wO+tgswm9VM2/EiuTiq7J9Wwp8d65t/RSGE=", "user"=>{"email"=>"", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"} 
Completed 401 Unauthorized in 0ms 
Processing by Devise::SessionsController#new as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"jLtHS2q0wO+tgswm9VM2/EiuTiq7J9Wwp8d65t/RSGE=", "user"=>{"email"=>"", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"} 
    Rendered devise/shared/_links.html.erb (0.8ms) 
    Rendered devise/sessions/new.html.erb within layouts/application (3.2ms) 
    Rendered layouts/_navigation.html.erb (0.5ms) 
    Rendered layouts/_messages.html.erb (0.0ms) 
Completed 200 OK in 29ms (Views: 28.9ms) 

後添加jquery移動,當用正確的數據登錄工作正常,但與無效的數據我得到401和不重定向注意。在http響應(查看與螢火蟲)只顯示錯誤的消息,如「無效的電子郵件」(不是HTML代碼或JSON)和jquery手機顯示「錯誤加載頁面」。

Started POST "https://stackoverflow.com/users/sign_in" for 127.0.0.1 at 2012-11-27 21:32:45 -0500 
Processing by Devise::SessionsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"EYx56pui4v6trcuzmXQuhzY2BDHwqrADepKuySx9ub0=", "user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"} 
Completed 401 Unauthorized in 0ms 

我有默認的設計控制器和默認視圖生成。

如何處理jquery mobile的設計錯誤消息?

+0

這裏的問題究竟是什麼?當登錄數據無效時,設計應該返回'401 Unauthorized'消息。 – Ashitaka

+0

好吧,我測試過了,你說得很對,我的問題是在401之後,沒有重定向,用jquery-mobile顯示「error loading page」,沒有發送帶有消息錯誤的所有html –

回答

1

只有在jquery-mobile和默認情況下才使用ajax。

config/initializers/devise.rb

# If http headers should be returned for AJAX requests. True by default. 
    config.http_authenticatable_on_xhr = false 
0

另一個解決方案是

:html => {:data => {:ajax => 'false'}} 

添加到所討論的形式,以便JQM不劫持它並把它變成一個AJAX請求。

請看我對同一個問題的完整解答https://stackoverflow.com/a/14595607/64669