【发布时间】:2012-03-06 01:17:41
【问题描述】:
我故意以煽动性的方式问这个问题,因为我担心我错过了什么。
处理模型更新的 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 验证,你会的。
此外,如果您的导航中有任何“当前选择”的逻辑,那么您实际上在视觉上处于错误的位置,因为正确的导航项不再突出显示 - 看起来您在用户个人资料中页面。
【问题讨论】:
-
争论语言的细节不合适
-
@KevinDTimm 你能解释一下你的意思吗?这是关于框架的编程问题,而不是语言问题
-
你在争论 RoR 的细节 - 为什么你应该在不同的 URL 上仅仅因为表单有错误? - 将被定义为关于语言的设计决策,而不是关于如何在该语言中做某事的讨论。方式已经定义,你不同意 - 你自己这么说的。
-
好的,有道理。我已经更新了问题,更具体地说明了我实际需要知道的内容
标签: ruby-on-rails routing crud