【发布时间】:2013-04-01 18:32:40
【问题描述】:
我正在尝试使用基本的 Rails 控制器并同时拥有更细粒度的控制。如果我正在进行 :new 操作,我会用我的新 @instance 响应,我会得到状态代码 200 并呈现 :new 模板。在展会上,同样的东西,不同的模板。到现在为止还挺好。但是,在创作过程中,我遇到了一些意想不到的事情。如果新记录成功并且我在上面调用respond_with,我将被重定向到显示(状态码302),这是正确的。但是,如果由于记录无效而无法创建新记录,则默认的 respond_with 会通过发出状态代码 200 并呈现新模板来响应。模板是对的,状态码是不对的。这种情况下响应码不应该是422(不可处理实体)吗?
【问题讨论】:
-
我从未见过 Rails 返回 422。在这种情况下似乎是合适的,但我认为 Rails 默认不会返回它。也许它会在 JSON 响应中?你总是可以通过在你的
render中包含一个status: :unprocessable_entity来强制它。 -
如何在respond_with中设置状态?那是我的问题。此外,从语义的角度来看,render 与响应包有什么关系?似乎渲染将数据包捆绑在一起并将其传递给机架处理程序。为什么我不能在渲染范围之外设置响应内容?我发现这是限制。
标签: ruby-on-rails http responders