所有post方式不使用session,特别是create,update,accept,destroy
保存不形成回路的返回地址
def save_referer
ifrequest.referer != request.url
session[:return_to] = request.referer
else
#session[:return_to] = nil
end
end
返回上一步的controller
此处backup_path是生成好的地址
def return_to_referer(backup_path,return_url = nil)
ifreturn_url
return_to = return_url
else
return_to = session[:return_to]
session[:return_to] = nil
end
if return_to== nil
return_to = backup_path
end
redirect_toreturn_to
end
返回上一步的链接
此处backup_path是生成地址的语句
defhistory_back(backup_path, parameter = {} ,return_url =session[:return_to])
result =""
ifreturn_url
result += link_to( '返回', return_url)
#session[:return_to] = nil
else
result += link_to( '返回', self.send(backup_path, parameter))
end
returnresult
end
返回上一步的地址
def history_back_url(backup_path,parameter = {})
result =""
ifsession[:return_to]
result = session[:return_to]
else
result = self.send(backup_path, parameter)
end
returnresult
end
使用说明:
1. 在列表或查看页面中提交某个审批的批准,执行完成后跳转回先前的view
return_to_referer(search_applies_order_applies_url(:cat=> order_apply.order_list.category),request.referer)
2. 在edit的时候记录返回地址
save_referer
在update的时候跳转回该地址
return_to_referer(contacters_url)
3. 页面内的返回地址,首先在show的controller记录
save_referer
然后在view中使用
<%=history_back_url(:show_my_orders_purchase_orders_path)%>