【发布时间】:2010-09-03 04:18:57
【问题描述】:
好的,我正在尝试了解 HTML 和 XML 格式的 CREATE 和 UPDATE 方法的最佳实践。 rails 生成器生成的控制器的默认代码对我来说有点不清楚。
对于 CREATE 方法,如果保存良好,生成器会说“redirect_to(@whatever)”用于 HTML 和“render :xml => @whatever, :status => :created, :location => @whatever" 用于 XML。
如果保存错误,生成器会说“render :action => 'new'” 用于 HTML 和“render :xml => @whatever.errors, :status => :unprocessable_entity" 用于 XML。
但是,对于 UPDATE 方法,如果更新良好,生成器会说 HTML 为“redirect_to(@whatever)”,XML 为“head :ok” .
而且,如果更新不正确,生成器会说“render :action => 'edit'” 用于 HTML 和“render :xml => @whatever.errors, :status => :unprocessable_entity" 对于 XML。
我明白这一点,这对我来说很有意义,而且效果很好 - 但是,我有两个问题:
首先,对于成功的 CREATE 和 UPDATE,HTML 格式,为什么使用“redirect_to(@whatever)”而不是“render :action => 'show'”?我了解重定向和渲染之间的区别,只是对你们倾向于使用哪种方式以及为什么这样做更好奇。看来重定向对于浏览器来说是不必要的额外行程。
其次,为什么在通过 XML 成功更新时“head :ok”,但是“render :xml => @whatever, :status => :created, :location => @whatever " 在通过 XML 成功创建后?这对我来说似乎不一致。似乎通过 XML 的成功 UPDATE 应该与通过 XML 的成功 CREATE 相同。似乎您需要返回新的/更新的对象,以便您可以对其进行测试。你们是怎么做到的,为什么?
【问题讨论】:
标签: ruby-on-rails rest