Rails:如何在重定向上保留对象错误

时间:2018-09-20 20:17:50

标签: ruby-on-rails redirect controller

我正在研究一个杂乱无章的铁轨应用程序。我在rails上有一个更新操作,对于成功和不成功的更新,都涉及到重定向(非渲染),因为路由被弄乱了,而且我无法轻松地键入render'edit'(我认为这将持续存在错误)。

我是否可以将对象错误持久化到视图中以将其显示为表单上的错误?因为就窗体而言,在视图上的重定向上不存在错误。看起来像这样:

      complex_path = "/path_name/path_2name/edit/#{@product.id}"
      if @product.update(part1_params)
        flash[:notice] = completion_message
        format.html { redirect_to complex_path
 and return }
      else
        flash[:notice] = "Unable to save Product. "
        format.html { redirect_to complex_path and return }
      end

1 个答案:

答案 0 :(得分:0)

嗯,有点黑,但是您可以在Flash哈希上使用自定义键。

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.setNavigationBarHidden(true, animated: false)
}

//reappears navigation bar on next page
override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationController?.setNavigationBarHidden(false, animated: true)
}

现在,对于下一个请求,您可以遍历else @product.errors.keys.each do |err_key| flash[err_key] = @product.errors.full_messages_for(err_key).join(' ') end flash[:alert] = 'Unable to save Product.' redirect_to .... end 以获得错误(您应该忽略:alert o:notice键)。

这真的很丑,但是flash.keys失败之后重定向很丑。...; P