Javascript 将_重定向到rails 4中的jquery

Javascript 将_重定向到rails 4中的jquery,javascript,jquery,ruby-on-rails,ruby-on-rails-4,Javascript,Jquery,Ruby On Rails,Ruby On Rails 4,在视图中,用户可以使用现有按钮增加/减少购物车中的产品数量 当购物车没有产品时,我想导航到另一个视图。由于我在浏览器上使用jquery,并且已经知道我要去哪里,我认为让用户只在稍后的控制器/模型上捕获这种情况没有多大意义 因此,我的问题是如何从xxx.js.erb中以rails方式导航到另一个视图 更新 谢谢你给我指引了正确的方向 对我起作用的是: $(location.attr('href','') 您可以通过Javascript重定向尝试解决此示例: # xxx.js.erb functio

在视图中,用户可以使用现有按钮增加/减少购物车中的产品数量

当购物车没有产品时,我想导航到另一个视图。由于我在浏览器上使用jquery,并且已经知道我要去哪里,我认为让用户只在稍后的控制器/模型上捕获这种情况没有多大意义

因此,我的问题是如何从xxx.js.erb中以rails方式导航到另一个视图

更新 谢谢你给我指引了正确的方向

对我起作用的是:
$(location.attr('href','')

您可以通过Javascript重定向尝试解决此示例:

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

阅读

您可以通过Javascript重定向尝试解决此示例:

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

阅读有关验证的信息

您必须这样做:

#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

更好的处理方法是使用
ajax

具体来说,我想您将向您的
cart\u控制器发送请求。这意味着,如果您想要管理与购物车数量相关的响应,那么如果您使用内置的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/controllers/cart_controller.rb
类CartController<应用程序控制器
def更新
@购物车=。。。。
回应待办事项|格式|
format.js
format.html
结束
结束
结束
这将使您能够加载以下内容:

#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 %>
#app/views/cart/update.js.erb

var new_path=“验证

您必须这样做:

#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

更好的处理方法是使用
ajax

具体来说,我认为您将向您的
cart\u控制器发送请求。这意味着如果您想管理与购物车数量相关的响应,那么如果您使用内置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/controllers/cart_controller.rb
类CartController<应用程序控制器
def更新
@购物车=。。。。
回应待办事项|格式|
format.js
format.html
结束
结束
结束
这将使您能够加载以下内容:

#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 %>
#app/views/cart/update.js.erb
var new_path=“感谢您为我指引了正确的方向。
我最后用了这个:

 $(location).attr('href','<%=j store_index_url %>');
$(location.attr('href','');
谢谢你给我指引了正确的方向。 我最后用了这个:

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

谢谢。这就是我正在做的。我只想在更新js和erb中进行重定向。所以它必须在Jquery中完成。谢谢。这就是我正在做的。我只想在更新js和erb中进行重定向。所以它必须在Jquery中完成。谢谢你引导我走向正确的方向+1我使用了$(location.attr('href','');不幸的是,我不能接受这个答案,因为它不适合我。导航没有发生。我的回答中更新了对我有用的东西谢谢你引导我走上了正确的方向+1我使用了$(location.attr('href','');不幸的是,我不能接受这个答案,因为它不适合我。导航没有发生。我的答案中更新了对我有用的内容