2014-09-22 4 views
1

Хотя на вид пользователь может использовать существующие кнопки для увеличения/уменьшения количества товаров в своей тележке.redirect_to от jquery in rails 4

Если у тележки нет товаров, я хочу перейти к другому виду. Поскольку я нахожусь в jquery в браузере и уже знаю, куда я хочу идти, я полагаю, что не имеет смысла позволять пользователю приступать только для того, чтобы впоследствии зафиксировать эту ситуацию на контроллере/модели.

Поэтому, мой вопрос заключается в том, как я могу перейти к другому виду изнутри xxx.js.erb по рельсам?

UPDATE Благодаря ЗЕЛЕНЫЙ для guiging меня в правильном направлении

работало для меня было: $ (место) .attr ('HREF', '<% = у 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 Я использовал это $ (location) .attr ('href', '<% = j store_index_url%>'); – Yios

+0

К сожалению, я не могу принять ответ, потому что это не сработало для меня. Навигация не проводился. Что сработало для меня, обновлено в моем ответе – Yios

1

Validation

Вы должны будете сделать это:

#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_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

+0

Хорошо - позвольте мне обновить для вас –

Смежные вопросы