【问题标题】:Devise with jquery-mobile, how handle error messages?使用 jquery-mobile 设计,如何处理错误消息?
【发布时间】:2012-11-28 02:44:00
【问题描述】:

在带有 (Gemfile) 的应用程序中:

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

在添加 jquery-mobile 之前,一切正常,当输入无效数据时,我得到带有错误消息和日志的页面:

Started POST "/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-mobile 后,使用正确数据登录时工作正常,但使用无效数据我得到 401 并且不重定向注意。在 http 响应中(使用 firebug 查看)仅显​​示带有“无效电子邮件”(不是 html 代码或 json)之类的错误消息,并且 jquery-mobile 显示“错误加载页面”。

Started POST "/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"=>"test@test.net", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"}
Completed 401 Unauthorized in 0ms

我已生成默认设计控制器和默认视图。

jquery mobile 的设计错误信息如何处理?

【问题讨论】:

  • 这里到底有什么问题?当登录数据无效时,Devise 应该返回401 Unauthorized 消息。
  • 好的,我测试过,你说得对,我的问题是在 401 之后,没有重定向,使用 jquery-mobile 显示“错误加载页面”,没有发送所有带有消息错误的 html

标签: jquery-mobile devise ruby-on-rails-3.2


【解决方案1】:

仅不将 ajax 与 jquery-mobile 一起使用并设计为默认值。

config/initializers/devise.rb

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

【讨论】:

    【解决方案2】:

    另一种解决方案是添加

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

    到有问题的表单,因此 jQM 不会劫持它并将其转换为 ajax 请求。

    请查看我对同一问题的完整答案https://stackoverflow.com/a/14595607/64669

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 2015-10-14
      • 1970-01-01
      相关资源
      最近更新 更多