gpt4 book ai didi

ruby-on-rails - Rails 和 respond_with : why are the status codes not right?

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:10:39 25 4
gpt4 key购买 nike

我正在尝试使用基本的 rails Controller ,同时具有更细粒度的控制。如果我正在进行 :new 操作,我将使用我的新 @instance 进行响应,并获得状态代码 200 并呈现 :new 模板。展会上,同样的东西,不同的模板。到目前为止,一切都很好。但是,在创建过程中,我遇到了一些意想不到的事情。如果新记录成功并且我在上面调用了 respond_with,我将被重定向到显示(状态代码 302),这是正确的。但是,如果由于记录无效而无法创建新记录,则默认的 respond_with 会通过发出状态代码 200 并呈现新模板进行响应。模板对了,状态码不对。在这种情况下,响应代码不应该是 422(不可处理的实体)吗?

最佳答案

Rails 返回 200 响应,因为它成功呈现了"new"模板。对于非 AJAX 请求,这通常可以正常工作,因为在这种情况下您还会向用户显示验证错误,以便他们知道发生了什么。

您需要 422 响应的唯一原因是信息是通过 AJAX 提交的,并且您的客户端 javascript 依赖于响应代码来知道要做什么。正如 Jim 所说,如果需要,您始终可以使用 :status 选项强制呈现响应代码。在默认的“简单”情况下,虽然不涉及 AJAX,但您可能不需要它。

更新:jQuery 客户端可能会依赖于响应代码,包括对 .ajax 的“错误”回调。功能,或通过 .ajaxError .

关于ruby-on-rails - Rails 和 respond_with : why are the status codes not right?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com