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