2014-09-22 30 views
1

在視圖中,用戶可以使用現有的按鈕來增加/減少購物車中產品的數量。jquery in rails 4的redirect_to

當購物車沒有產品時,我想導航到另一個視圖。由於我在瀏覽器中使用jQuery,並且已經知道我想要去哪裏,所以我認爲讓用戶稍後在控制器/模型上捕獲這種情況並不合理。

因此,我的問題是如何導航到xxx.js.erb rails-way內的另一個視圖?

UPDATE 感謝Зелёный爲guiging我朝着正確的方向

什麼工作對我來說是: $(位置).attr( 'href' 屬性, '<%= j的store_index_url%>');

回答

0

感謝<Зелёный>指導我正確的方向。 我結束了使用這個:

$(location).attr('href','<%=j store_index_url %>'); 
3

您可以通過JavaScript重定向嘗試和身邊工作這個例子:

# xxx.js.erb 
function() { 
    var new_path = <%= @some_path_from_controller %>; 
    document.location.href = new_path; 
}; 

閱讀document.location

+0

謝謝你指導我正確的方向。 +1我用這個$(位置).attr('href','<%= j store_index_url%>'); – Yios 2014-09-22 10:07:39

+0

不幸的是,我不能接受答案,因爲它不適合我。導航沒有發生。在我的回答 – Yios 2014-09-22 10:13:35

1

驗證

你必須這樣做:

#app/assets/javascripts/application.js 
$(document).on("click", ".cart_button", function(){ 
    if($(".cart_total").val() == "0"){ 
     document.location.href = "/your/new/path"; 
    }else{ 
     //etc 
    } 
}); 

阿賈克斯

一個更好的方式來處理,這將是與ajax

具體來說,您要發送請求到您的cart_controller我相信。這意味着,如果你想在管理方面給車數量的響應,你會在一個更有利的地位,如果你使用內置的Rails js後端處理:

#app/controllers/cart_controller.rb 
class CartController < ApplicationController 
    def update 
     @cart = .... 
     respond_to do |format| 
      format.js 
      format.html 
     end 
    end 
end 

這會給您加載以下的能力:

#app/views/cart/update.js.erb 
<% if @cart.total_quantity.zero? %> 
    var new_path = "<%=j controller_path %">; 
    document.location.href = new_path; 
<% else %> 
    // do something here 
<% end %> 
+0

謝謝更新了什麼對我有效。這就是我實際上在做的事情。它只在更新中,js,erb我想要做重定向。所以它必須在JQuery中完成。 – Yios 2014-09-22 10:06:39

+0

好的 - 讓我爲你更新 – 2014-09-22 10:09:04