gpt4 book ai didi

ruby-on-rails - "Rails Way"的 `update` 是否存在根本缺陷?

转载 作者:行者123 更新时间:2023-12-04 05:51:08 25 4
gpt4 key购买 nike

我故意以煽动性的方式提出这个问题,因为我担心我遗漏了一些东西。

处理模型更新的 Rails 方式如下:

class UsersController < ApplicationController
...
def update
@current_user = load_user
if @current_user.update_attributes params[:user]
redirect_to success_path
else
render :edit
end
end
end

这一切都很好,除了当表单提交不正确时你最终会得到一个奇怪的 URL:

编辑用户

你发现自己在路上:
users/:user_id/edit

提交未验证的编辑后

即您将需要修复表单中的输入并重新提交:
users/:user_id

提交验证后的编辑
success_path

为什么仅仅因为表单有错误就应该使用不同的 URL?

问题...

你在做同样的事情,但你现在在不同的 URL 上。这有点奇怪。

其实坦白说感觉不对。您所在的表单未正确验证,因此已重新加载。你应该还在 /users/:user_id/edit .如果你做过 JS 验证,你会的。

此外,如果您的导航中有任何“当前选择”逻辑,那么您实际上在视觉上处于错误的位置,因为不再突出显示正确的导航项目 - 看起来您在用户个人资料页面上。

最佳答案

Why the hell should you be on a different URL just because the form has errors?



因为当你第一次去的时候:
users/:user_id/edit

...您正在请求 GET。

然后你发布到:
users/:user_id

因此,通过发送表单帖子,您请求了不同的资源路由,并且根据定义具有不同的 URL。

框架不关心在处理您的请求时后台发生了什么 - 它只知道它是一个 POST(按照惯例,它不一定像 GET 那样具有幂等性)

关于ruby-on-rails - "Rails Way"的 `update` 是否存在根本缺陷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9280834/

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