处理ActionController错误时Flash消息无法显示的问题
解决Rails中Render场景下Flash消息不显示的问题
你的问题核心是**flash与render的生命周期不匹配**:
- 普通
flash消息是为下一个HTTP请求准备的(通常配合redirect_to使用) - 而
render属于当前请求周期,此时普通flash还未被视图读取就会在请求结束后被清除
修改方案
将控制器里的flash[:danger]替换为flash.now[:danger],flash.now是专门用于在当前请求视图中显示的消息存储方式:
class ActionController < ApplicationController def action begin @results = ApiHelper.helper(parameter) # 注意此处你拼写错误:paremeter → parameter rescue StandardError => e flash.now[:danger] = "show some error messages" # 改用flash.now end render "something" end end
额外检查点
- 你的布局渲染逻辑无误:
applications.html.erb中遍历flash并生成Bootstrap样式提示框的代码是正确的,alert-danger属于合法的样式类 - 修复代码中的拼写错误:
paremeter改为parameter,避免后续API调用出现参数传递问题
内容的提问来源于stack exchange,提问作者Nick Chen
相关产品推荐
相关产品推荐

