Ruby on Rails-使用原始参数重新呈现失败的控制器动作上的表单
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
我正在尝试在更新前设置状态,因此可以减少执行的保存次数。我希望只保存一次。但是,在失败的保存中重新呈现表单时,即使“ Submitted”不是原始参数之一,也将使用原始参数和状态将其重新呈现为Submitted。有没有一种方法可以只使用原始参数进行渲染?
答案
之前检查是否有效
def update
@expense_report = ExpenseReport.find(params[:id])
@expense_report.status = "Submitted" if @expense_report.valid?
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
呈现视图之前。它将解决问题。
以上是关于Ruby on Rails-使用原始参数重新呈现失败的控制器动作上的表单的主要内容,如果未能解决你的问题,请参考以下文章
在 Ruby on Rails/JS 中以模式呈现新表单而不是新页面