在导轨中保存失败时导航回来?

时间:2011-04-20 17:11:46

标签: ruby-on-rails ruby ruby-on-rails-3

如果保存出现问题,我现在就做以下事情,但感觉有些不对。

  if @store.update_attributes(params[:store])
    redirect_to admin_stores_path, notice: "Updated ..."
  else
    flash[:alert] = "Error"
    render action: 'edit'
  end  

使用浏览器导航功能和redirect_back或其他东西会更好吗?我甚至不记得从哪里复制了上面的内容,但有时会产生一些奇怪的结果。

有人能告诉我处理失败保存的最佳方法;导航明智吗?

3 个答案:

答案 0 :(得分:4)

使用render代替redirect的原因很简单:

  • 您保留对象变量,以便用户在犯错时不必重新输入所有内容。

  • 错误存储在对象本身内,因此您需要它来显示它们

答案 1 :(得分:2)

通常在编写控制器操作时,您会处理两种情况:成功和失败。如果发生错误,您将呈现相同的操作以显示验证错误,如果操作成功,您将 redirect_to 。这是常见的做法,你甚至可以在关于Rails的不同书籍中找到这样的“模式”。 关于redirect_to:回来,我不想使用它,因为它可以带来很多麻烦:)

答案 2 :(得分:1)

这是处理rails中表单提交的最常用方法。保存对象后,您希望用户重定向其他页面,主要是显示页面。

最重要的是渲染操作,当您说渲染操作时,您实际上想要渲染该操作的视图。视图有form_for和error_message_for,这些渲染表单包含预存输入值和保存时出现的对象错误。