我完全失去了,我尽可能多地研究,找不到答案。以下是代码:
def create
@budget_source = BudgetSource.create(budget_source_params)
@budget_source.update(:user_id => current_user.id)
@budget_source.budget_segments.order(:id).each do |bs|
bs.budget_ratios.order(:id).each_with_index do |br, i|
br.update(scenario_id: i+1)
end
end
render 'show'
end
每次刷新页面时都会创建一个新的BudgetSource。
答案 0 :(得分:0)
问题在于render 'show'
。当您提交表单时,您将保持在同一页面上,因为呈现只是呈现模板。因此,当您刷新页面时,它不是调用show
方法,而是实际调用create方法,因为您执行的上一个操作是POST而不是GET。你应该做的是用redirect_to @budget_source
之类的东西重新定向到show方法。大多数浏览器通常会警告您是否刷新了会导致POST方法而不是GET的页面。