1

如何使用 ajax 刷新带有错误消息的 rails 路径。我正在等待来自支付 API 的回调,如果我收到错误,我想重新加载页面并显示错误。问题是我正在使用ajax。我怎样才能做到这一点?

4

3 回答 3

1

如果错误持续存在于数据库中,您可以在回调函数中使用window.location来重新加载出现错误的页面。

于 2013-08-30T19:35:21.540 回答
1

在响应 AJAX 请求的操作中,您可以执行

flash[:alert] = "My error"

然后让动作呈现重定向,如下所示:

render js: "window.location.href = '#{my_named_route_path}'"

或者,您可能想编写一个方法来抽象它,例如:

app/controllers/application_controller.rb

def redirect_to_via_xhr_if_applicable(url, options = {})
  flash[:info] = options[:info] if options.key?(:info)
  flash[:alert] = options[:alert] if options.key?(:alert)
  flash[:notice] = options[:notice] if options.key?(:notice)
  if request.xhr?
    render js: "window.location.href = '#{url}'"
  else
    redirect_to(url)
  end
end

然后您可以从您的 AJAX(或非 AJAX)操作中进行此调用:

redirect_to_via_xhr_if_applicable(my_named_route_path, alert: 'My error!')
于 2013-08-30T19:38:30.620 回答
1

刷新页面以显示简单的反馈错误是完全没有必要且冗长的。一个更干净,更直接的方法是使用 js 在回调中更新 dom。

一个非常简单的演示:

$(".errors").append('<li>My error</li>');

为了简单起见,请这样做(或在 javascript 中进行类似操作),不要重定向只是为了显示错误。

于 2013-08-30T19:48:59.003 回答