2013-08-30 102 views
0

如何使用ajax刷新帶有錯誤消息的rails路徑。我正在等待支付API的回調,如果出現錯誤,我想重新加載頁面並顯示錯誤。問題是我正在使用ajax。我該如何解決這個問題?使用AJAX重定向到rails路徑

回答

1

刷新頁面以顯示簡單的反饋錯誤是完全沒有必要和冗長的。更簡潔,更直接的方法是使用js來更新回調中的dom。

一個非常非常簡單的例子:

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

在簡單的名稱,這樣做(或JavaScript中類似的東西),不只是重定向到顯示錯誤。

+1

是啊這是最好的答案! –

+0

@AlainGoldman創建另一個問題,如果你有困難實施這個正確。 –

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!')