0

在登录表单中,当用户单击登录按钮进行登录时,登录表单通过会话资源调用创建操作。

这是动作:

 def create
   user = User.find_by_email(params[:session][:email].downcase)
   if user && user.authenticate(params[:session][:password])
     #Sign the user in and redirect to user's main page
   else
    flash[:error] = "Invalid email/password combination"
    render 'new'
  end
 end      

虽然 flash[:error] 不起作用。

我尝试在静态页面控制器中放置一个'flash [:notice]',以便在主页被重定向到时闪烁通知,尽管这也不起作用。

我的测试服给了我这个错误

Failure/Error: it { should have_selector('div.alert.alert-error', text: 'Invalid') }
   expected css "div.alert.alert-error" with text "Invalid" to return something

这是我的css的问题吗?

谢谢你的帮助!

4

2 回答 2

2

您可能必须使用 flash.now[:error],因为您是在之后渲染视图。

flash.now[:error] = "Invalid email/password combination"

http://apidock.com/rails/ActionDispatch/Flash/FlashHash/now

于 2012-08-24T14:25:57.000 回答
2

您是否添加了代码以在布局或视图模板中显示 Flash?

看起来您可能正在使用 Bootstrap,因此您可以在布局文件(views/layouts/application.html.erb或其他布局)中执行类似的操作:

<% flash.each do |key, message| %>
  <div id="flash-<%= key %>" class="alert alert-<%= key %> fade in">
    <button class="close" data-dismiss="alert">&times;</button>
    <%= message %>
  </div>
<% end %>
于 2012-08-24T14:37:43.197 回答