rails中使用flash变量启用消息提醒
来源:互联网 发布:re管理器怎样改mac 编辑:程序博客网 时间:2024/06/11 16:29
rails中有一个特殊的变量flash,可以用于暂存一个hash值,值的有效期直到下一个action,一般与redirect_to一同使用
比如用户注册成功后跳转到用户信息页的时候要提示注册成功(user/new -> user/:id/show)
可以这样做:
def create
@user = User.new(user_params)
if @user.save
# 用户注册成功后(User对象/实例保存成功)会新建一个flash变量,在show视图模板中会用到,一旦刷新页面,则flash失效,提示信息也即消失
flash[:success]="欢迎来到德莱联盟"
redirect_to @user
else
render 'new'
end
end
show方法中不需要任何代码,直接在show.html.erb视图中就可以使用flash这个暂存变量
<% flash.each do |key, value| %>
<div class="alert alert-<%= key %>"><%= value %></div>
<% end %>
当然也可以写在(application.html.erb),因为它的有效期是到下一个action,而每次请求都需要经过application.html.erb,所以也可以写在这里
这样跳转到show页面后,会提示一次消息,只要刷新页面或者重新跳转到其他页面,flash变量就消失了
### flash.now方法
由于flash会存活到下一次请求,而在某些情况下,我们需要它只存留在当前请求下,比如在上面的基础,进行用户登录,用户登录失败(用户名/密码错误)后,
重新渲染当前视图,由于渲染并不算是一次请求,所以渲染到当前页面并提示错误信息之后,当点击其他链接跳转到另一个页面的时候,flash变量仍然存在,这个时候
页面的错误提示仍然没有消失
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
sign_in user
redirect_to user
else
#使用flash才能确保登录成功后(先登录失败一次),错误提示消失,now表示flash值在
# 当前这次请求中有效,因为这里登录错误之后是render重新渲染页面算不上新的请求
# flash仍然会存留到下一次请求的页面中
flash.now[:error] = "用户名或密码错误"
render 'new'
end
end
- rails中使用flash变量启用消息提醒
- rails中Flash消息淡出
- Rails中使用flash总结
- Rails中使用flash总结
- Rails中使用flash总结
- 如何在rails中自动隐藏flash message消息
- Rails中Flash
- 在Ruby中使用flash传递消息
- 在Flash应用中使用动态变量
- 使用带有提醒消息的触发器(转)
- 关于android 消息提醒,在网上找到这个项目在eslipse中使用ValueAnimator报错
- rails中flash[:notice]的问题
- rails中使用bleak_house
- rails中使用ajax
- rails中使用devise
- rails中 flash 和 flash.now的区别
- 【Rails】在Rails中使用Gravatar
- 【Rails】在Rails中使用Gravatar
- myflag step14:打卡功能
- 工厂模式学习
- Gerrit使用篇-提交代码,合并代码
- 为一个视图设置自定义的背景颜色
- spring入门篇
- rails中使用flash变量启用消息提醒
- JAVA之“==”和“equals”的区别
- ubuntu搭建 nginx+php7+php-fpm+mysql
- sql 创建表、删除表 增加字段 删除字段操作
- html的有序列表与无序列表
- java常用的设计模式
- 子进程 已安装 pre-removal 脚本 返回了错误 子进程 已安装 pre-removal 脚本 返回了错误
- CSS选择器中的正则表达式
- Django 缓存入门教程