Pet*_*xey 4 routing ruby-on-rails crud
我故意以一种煽动性的方式提出这个问题,因为我担心自己会遗漏一些东西.
用于处理模型更新的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
Run Code Online (Sandbox Code Playgroud)
这一切都很好,除非您在表单提交不正确时最终得到一个奇怪的URL:
编辑用户
你发现自己在路上:
users/:user_id/edit
Run Code Online (Sandbox Code Playgroud)
提交不验证的编辑后
即你需要修复表单中的输入并重新提交:
users/:user_id
Run Code Online (Sandbox Code Playgroud)
提交完成验证的编辑后
success_path
Run Code Online (Sandbox Code Playgroud)
为什么你应该只是因为表单有错误而在不同的URL上呢?
问题...
你正在做同样的事情,但现在你正在使用不同的URL.这有点奇怪.
事实上坦率地说,这感觉不对.您正在使用未正确验证的表单,因此已重新加载.你应该继续/users/:user_id/edit.如果你已经完成了JS验证,那就是.
此外,如果你的导航中有任何"当前选择的"逻辑,那么你实际上在视觉上是错误的,因为正确的导航项不再突出显示 - 它看起来像你在用户个人资料页面上.
为什么你应该只是因为表单有错误而在不同的URL上呢?
因为当你第一次去:
users/:user_id/edit
Run Code Online (Sandbox Code Playgroud)
......你要求获得GET.
然后你发帖到:
users/:user_id
Run Code Online (Sandbox Code Playgroud)
因此,通过发送表单帖子,您已请求了不同的资源路由,并根据定义具有不同的URL.
在您的请求处理过程中,框架并不关心后台发生了什么 - 它只知道它是一个POST(按照惯例,它不一定是GET的幂等)
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |