在阅读其他人的控制器代码和其他一些资源时,我经常遇到这种代码:
def create
if @record.save
redirect_to @record
else
respond_to do |format|
format.html {render :new}
format.json {render @record.errors}
end
end
但是现在,只需单击我的应用页面以获得乐趣(完全没有通过测试测试),我发现 - 如果您单击无效表单上的提交,您将获得表单呈现和当前路径为{{1} }。但如果您点击重新加载页面,则会导致错误:
/records
在我的情况下,我没有No route matches GET /records
操作,或者您将被重定向到索引页面,这也很不方便。
有没有其他方法可以重定向回index
,但不会丢失表单输入或错误消息,就像渲染一样?
我可以这样做吗?
/new
答案 0 :(得分:0)
render
加载视图而不调用其他操作。包含render
调用的操作中的数据用于呈现该视图。这就是表单数据可以在该视图中显示的原因。
redirect_to
启动一个新请求,调用与路由关联的操作。由于调用了新操作,因此以前调用的操作的数据不可用于客户端所指向的视图。