整个方法没有保留实例var

时间:2011-10-22 01:43:31

标签: ruby-on-rails ruby-on-rails-3.1

以下是客户控制器中的代码:

  def edit
    @customer = Customer.find(params[:id])
    @return_to = params[:return_to]     
  end

  def update
    @customer = Customer.find(params[:id])

    if @customer.update_attributes(params[:customer], :as => :roles_new_update)

    redirect_to @return_to, :notice => 'Customer was updated successfaully!'
    else
      render 'edit', :notice => 'Customer was not updated!'
    end
  end

验证方法编辑中@return_to中有值。但是有一个错误说:无法重定向到零!为了

   redirect_to @return_to, :notice => 'Customer was updated successfaully!'

在方法更新中。

有关错误的任何想法?感谢。

2 个答案:

答案 0 :(得分:2)

这是因为当你进行编辑操作时,这是一个显示表单的请求。然后,当您提交表单时,这是第二个请求调用更新操作。动作中设置的任何状态仅限于该动作。有多种方法可以跨多个操作使用数据:

  1. 数据库(将其保存在模型中)
  2. 会话哈希
  3. 将其传递到视图中以进入您的表单。
  4. 因为它是重定向/返回值,我建议使用会话变量,例如:

    session[:return_to] = params[:return_to]
    

    在您的编辑操作中,只需在更新中引用该值:

    session[:return_to]
    

答案 1 :(得分:0)

我不明白; edit并未致电update,因此@return_to仍然没有内在原因。

您是否知道按请求创建了控制器?