如何使用ajax刷新带有错误消息的rails路径。我正在等待来自支付API的回调,如果我收到错误,我想重新加载页面并显示错误。问题是我正在使用ajax。我该怎么办呢?
答案 0 :(得分:1)
如果数据库中仍然存在错误,您可以在回调函数上使用window.location,以便在页面中重新出错。
答案 1 :(得分: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!')
答案 2 :(得分:1)
刷新页面以显示简单的反馈错误是完全没必要和冗长的。更简洁,更直接的方法是使用js来更新回调中的dom。
一个非常简单的演示:
$(".errors").append('<li>My error</li>');
以简洁的名义,这样做(或javascript中的类似内容),不要仅重定向以显示错误。