ruby-on-rails - Ruby on Rails - 使用原始参数在失败的控制器操作上重新呈现表单
问题描述
我有一个如下所示的控制器:
def update
@expense_report = ExpenseReport.find(params[:id])
@expense_report.status = "Submitted"
respond_to do |format|
if @expense_report.update(expense_report_params)
...
...
else
format.html { render :edit }
...
end
end
end
我正在尝试在更新之前设置状态,以便减少执行的保存次数。我宁愿只进行一次保存。但是,当表单在保存失败时重新呈现时,它会使用原始参数重新呈现,并且状态设置为已提交,即使“已提交”不是原始参数之一。有没有办法只使用原始参数进行渲染?
解决方案
Rails 4.2 准确地介绍了您所需要的。在else
块上,只需调用
@expense_report.restore_attributes
在渲染视图之前。它会成功的。
推荐阅读
- python - 如果另一列中的对应值也是 NaN,则将一列中的所有值设置为 NaN
- r - 堆叠的栅格图层在 R 中具有不同数量的观测值
- python - 在 Python 上使用 Microsoft Graph API 进行分页
- c++ - 具有 O2+ 优化的英特尔编译器上的特征交换函数中的错误
- javascript - 使用 php & javascript 使多个下拉菜单相互依赖
- android - 为 Fragment 编写单元测试
- c# - 命名空间“Microsoft.AspNetCore.Authentication”中不存在类型或命名空间名称“AzureAD”
- c++ - std::unordered_map 相等性是否取决于插入顺序
- html - 如何创建一个包裹和弹性项目的 FlexBox 布局是流畅但相等的
- php - 如何以任何字符集在数据库中添加数据?