使用设计时的奇怪行为:不显示flash消息

时间:2012-03-25 04:44:16

标签: ruby-on-rails devise

在sign_in页面中,我没有输入任何内容,然后点击提交。页面只是刷新,没有出现错误信息。

我的视图中有flash [:alert]和flash [:notice]:

- if flash[:alert]
    div.alert #{flash[:alert]}
- elsif flash[:notice]
    div.notice #{flash[:notice]}

记录器说:

Started POST "/users/sign_in" for 127.0.0.1 at 2012-03-25 12:38:49 +0800
Processing by SessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"9a85NKpAj3ZJgKnzStvBA3sxGqrShgbUqbjiJrqQCAM=", "user"=>{"email"=>"", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"登陆"}
Completed 401 Unauthorized in 0ms
Processing by SessionsController#new as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"9a85NKpAj3ZJgKnzStvBA3sxGqrShgbUqbjiJrqQCAM=", "user"=>{"email"=>"", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"登陆"}
  Rendered devise/shared/_links.html.slim (0.3ms)
  Rendered devise/sessions/new.html.slim within layouts/one_column (5.1ms)
  Rendered layouts/_navbar.html.slim (0.8ms)
  Rendered layouts/site.html.slim (12.8ms)
Completed 200 OK in 22ms (Views: 21.2ms | ActiveRecord: 0.0ms)

我对

感到困惑
"Completed 401 Unauthorized in 0ms"

我觉得有些不对劲。

但在哪里?

2 个答案:

答案 0 :(得分:0)

检查您的视图页面。不要使用'flash'。根据模板(由脚手架生成)

<% @post.errors.full_messages.each do |msg| %>      
  <li><%= msg %></li>     
<% end %>

您应该更改视图页面中的变量,您将看到错误消息,例如“用户名不能为空”或“用户名不能为空”。

答案 1 :(得分:0)

我遇到了同样的问题而你使用正确:

- if flash[:alert]
    div.alert #{flash[:alert]}
- elsif flash[:notice]
   div.notice #{flash[:notice]}

我的问题是我有自己的config/locales已定义(en.yml,it.yml等),但我没有从config/locales/devise.en.yml复制Devise条目。

作为快速测试,我将以下内容添加到config/locales/en.yml

en:
  devise:
    sessions:
      signed_in: 'Signed in successfully.'

登录后,flash[:notice]开始工作。