以下是客户控制器中的代码:
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!'
在方法更新中。
有关错误的任何想法?感谢。
答案 0 :(得分:2)
这是因为当你进行编辑操作时,这是一个显示表单的请求。然后,当您提交表单时,这是第二个请求调用更新操作。动作中设置的任何状态仅限于该动作。有多种方法可以跨多个操作使用数据:
因为它是重定向/返回值,我建议使用会话变量,例如:
session[:return_to] = params[:return_to]
在您的编辑操作中,只需在更新中引用该值:
session[:return_to]
答案 1 :(得分:0)
我不明白; edit
并未致电update
,因此@return_to
仍然没有内在原因。
您是否知道按请求创建了控制器?