Mas*_*ief 8 ruby login ruby-on-rails devise
使用Rails 3.07和Devise 1.1.5
一切都很好,正如预期的那样,只有一个例外.例如,当用户尝试使用伪造的密码登录时,设计会拒绝登录尝试,这是正确的,但无法提供错误消息.
我在app/helpers/devise_helper.rb中设置了几个错误显示方法,我使用的是一个名为devise_sign_in_error_messages的方法!用于登录视图.因此,在这种情况下,我能够验证该函数的以下行是否返回错误的空字符串:如果是resource.errors.empty,则返回""?
如果我给出一个正确的用户名和密码,系统会把我记录下来,所以所有的设计逻辑似乎都很好,只是缺少一个错误信息,这是一个谜.
我需要更改以帮助设计在登录失败时传递错误消息?
编辑:
答案是:a)设计是在闪光灯中坚持答案b)即使它在闪光灯中,它也没有使用你可能期望的键
使用这段代码,我可以看到消息:
<% flash.each do |name, msg| %>
<%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我在不同的帖子中遇到了另一个问题的答案: 另一个堆栈溢出帖子
我之前尝试输出闪存,但没有看到消息,因为我从一个看起来不够的堆栈溢出帖子中跟踪了一些代码.也就是说,我曾经尝试过:
<%= flash[:message] if flash[:message]
flash[:warning] if flash[:warning]
flash[:error] if flash[:error] %>
Run Code Online (Sandbox Code Playgroud)
Devise没有使用这些密钥登录错误消息,所以这段代码不会给你任何东西.
我发现设计对此的处理是不一致的.具体来说,如果我选择devise的忘记密码选项并输入一个虚假的电子邮件地址,那么错误会在resource.errors数组中传回,但是这里的错误登录会在flash中传递.
| 归档时间: |
|
| 查看次数: |
6774 次 |
| 最近记录: |