如果保存出现问题,我现在就做以下事情,但感觉有些不对。
if @store.update_attributes(params[:store])
redirect_to admin_stores_path, notice: "Updated ..."
else
flash[:alert] = "Error"
render action: 'edit'
end
使用浏览器导航功能和redirect_back或其他东西会更好吗?我甚至不记得从哪里复制了上面的内容,但有时会产生一些奇怪的结果。
有人能告诉我处理失败保存的最佳方法;导航明智吗?
答案 0 :(得分:4)
使用render
代替redirect
的原因很简单:
您保留对象变量,以便用户在犯错时不必重新输入所有内容。
错误存储在对象本身内,因此您需要它来显示它们
答案 1 :(得分:2)
通常在编写控制器操作时,您会处理两种情况:成功和失败。如果发生错误,您将呈现相同的操作以显示验证错误,如果操作成功,您将 redirect_to 。这是常见的做法,你甚至可以在关于Rails的不同书籍中找到这样的“模式”。 关于redirect_to:回来,我不想使用它,因为它可以带来很多麻烦:)
答案 2 :(得分:1)
这是处理rails中表单提交的最常用方法。保存对象后,您希望用户重定向其他页面,主要是显示页面。
最重要的是渲染操作,当您说渲染操作时,您实际上想要渲染该操作的视图。视图有form_for和error_message_for,这些渲染表单包含预存输入值和保存时出现的对象错误。