ruby-on-rails - Rails:如何在重定向时保留对象错误
问题描述
我正在开发一个维护不善的混蛋 Rails 应用程序。我在 Rails 上有一个更新操作,对于成功和不成功的更新都涉及重定向(不是渲染),因为路由搞砸了,我无法轻松输入渲染“编辑”(我认为这会保留错误)。
有没有办法让我将对象错误持久化到视图中以将它们显示为表单上的错误?因为就表单而言,在视图的重定向上,错误不存在。它看起来像这样:
complex_path = "/path_name/path_2name/edit/#{@product.id}"
if @product.update(part1_params)
flash[:notice] = completion_message
format.html { redirect_to complex_path
and return }
else
flash[:notice] = "Unable to save Product. "
format.html { redirect_to complex_path and return }
end
解决方案
嗯,这有点 hacky,但您可以在 Flash 哈希上使用自定义键。
else
@product.errors.keys.each do |err_key|
flash[err_key] = @product.errors.full_messages_for(err_key).join(' ')
end
flash[:alert] = 'Unable to save Product.'
redirect_to ....
end
现在,对于下一个请求,您可以迭代flash.keys
以获取错误(您应该忽略 :alert o :notice 键)。
真的很丑,但是save
失败后重定向更丑所以.... ;P
推荐阅读
- android - 找不到类“com.esri.arcgisruntime.ArcGISRuntimeEnvironment”
- python - 为每次调用 print() 设置断点
- c# - 动画从底部到顶部 Xamarin 窗体的视图
- python - XGBoost 多类分类标签编码错误
- maven - Maven - 发布多个子模块/工件
- ios - 仅使用资源加载捆绑包时“找不到 CFBundle 的可执行文件”
- c# - 如何将 DTO 对象转换为通用 T 类型
- ios - 动态结构变量名称
- c# - 缺少 ASP.NET Web 服务根元素(控制台应用程序)C#
- bash - 用 sed 将 for 循环重写为 awk