Rails:在无效条目上呈现新的实践

时间:2015-12-30 00:05:56

标签: ruby-on-rails

在阅读其他人的控制器代码和其他一些资源时,我经常遇到这种代码:

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

1 个答案:

答案 0 :(得分:0)

render加载视图而不调用其他操作。包含render调用的操作中的数据用于呈现该视图。这就是表单数据可以在该视图中显示的原因。

redirect_to启动一个新请求,调用与路由关联的操作。由于调用了新操作,因此以前调用的操作的数据不可用于客户端所指向的视图。