2014-02-15 37 views
0

我完全失败,我尽可能多地研究,找不到答案。这是下面的代码:Rails 4控制器:为什么每次刷新页面时都会创建一个新对象?

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

问题出在render 'show'。当您提交表单时,由于渲染只呈现模板,因此您将停留在同一页面上。所以当你刷新页面时,不是调用show方法,而是实际调用create方法,因为你所做的最后一个操作是POST而不是GET。你应该做的是做一个类似redirect_to @budget_source的重定向回显示方法。大多数浏览器通常会警告您是否正在刷新会导致POST方法而不是GET的页面。

+0

谢谢Stepan!我知道它一定是非常基本的东西。我正在阅读redirect_to和渲染之间的区别。 – allenwlee

相关问题