加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – “更新”的“Rails方式”是否存在根本缺陷?

发布时间:2020-12-17 03:02:11 所属栏目:百科 来源:网络整理
导读:我故意以一种煽动性的方式提出这个问题,因为我担心自己会遗漏一些东西. 用于处理模型更新的Rails方法如下: class UsersController ApplicationController ... def update @current_user = load_user if @current_user.update_attributes params[:user] redi
我故意以一种煽动性的方式提出这个问题,因为我担心自己会遗漏一些东西.

用于处理模型更新的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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读