Rails中关于报错信息有专门的falsh接口,使用方式跟session很像。flash的翻译是一闪而过,作用也是如此:flash中存储的信息在下一个请求中用一下然后就自动清空。
实际操作:
原来的代码(注意如下是user局部变量而不是@user实例变量,这是因为该动作不需要对应的视图,且重定向页面时不需要显示对应的 @user.errors所以使用局部变量即可)
修改后的代码:
注意:redirect_to就是向浏览器发出下一个请求,那么flash保存的信息就会在下一个请求:root或者:login中用到
要展示这些flash信息就要全局的布局文件添加代码,如果flash不为空那就显示相应的内容:
填写错误用户名和密码提交之后报错如下:
我们添加一些样式:
如下:
同时我们刷新该页面重新发送一个请求或者点击另外一个链接"关于",这是新的一个请求,所以flash里的信息清空就不会在页面显示。
Flash信息老是需要我们刷新页面来取消显示很不好,所以下面来实现 flash 信息的自动消失。到 application.html.erb 中 </body> 的上面,添加如下红框js代码,让flash信息在页面停留4秒之后自动隐藏: