2014-09-22 31 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