2014-02-05 2 views
1

Я искал везде, но, похоже, не может найти проблему, почему мой запрос AJAX не проходит для добавления элементов в корзину.ajax не работает на рельсах 4

line_items_controller.rb

def create 
    product = Product.find(params[:product_id]) 
    @line_item = @cart.add_product(product.id) 

    respond_to do |format| 
    if @line_item.save 
     format.html { redirect_to store_url } 
     format.js { @current_item = @line_item } 
     format.json { render action: 'show', 
          status: :created, location: @line_item } 
    else 
     format.html { render action: 'new' } 
     format.json { render json: @line_item.errors, 
          status: :unprocessable_entity } 
    end 
    end 
end 

магазин/index.html.erb

 <% if notice %> 
<p id="notice"><%= notice %></p> 
<% end %> 

<h1>Your Pragmatic Catalog</h1> 

<% cache ['store', Product.latest] do %> 
<% @products.each do |product| %> 
    <% cache ['entry', product] do %> 
     <div class="entry"> 
      <%= image_tag(product.image_url) %> 
      <h3><%= product.title %></h3> 
      <%= sanitize(product.description) %> 
      <div class="price_line"> 
      <span class="price"><%= number_to_currency(product.price) %></span> 
      <%= button_to 'Add to Cart', line_items_path(product_id: product), 
          remote: true %> 
      </div> 
     </div> 
    <% end %> 
<% end %> 
<% end %> 

line_items/create.js.erb

$('#cart').html("<%= escape_javascript render(@cart) %>"); 

$('#current_item').css({'background-color':'#88ff88'}). 
    animate({'background-color':'#114411'}, 1000); 

line_items/_line_item.html.erb

<% if line_item == @current_item %> 
<tr id="current_item"> 
<% else %> 
<tr> 
<% end %> 
<td> <%= line_item.quantity %>&times; </td> 
<td> <%= line_item.product.title %> </td> 
<td class= "item_price" > <%= number_to_currency(line_item.total_price) %> </td> 
</tr> 

В моем файле журнала я вижу, что страница отправляет кучу запросов GET каждый раз, когда я добавляю элемент в корзину, а также вижу, что он перезагружается. Ошибок не обнаружено в файле журнала.

перезапущен сайт несколько раз. если у меня установлены jquery и jquery-ui gems правильно. Ничего не изменилось.

ответ

0

попробуйте указать

метод:: размещать

в вызове button_to. Запрос get не будет запускать метод create.

0

Вы вызываете действие create line_items_controller.rb и создаете действие POST-действие.

Так добавить method: :post в этом

<%= button_to 'Add to Cart', line_items_path(product_id: product), method: :post 
          remote: true %> 

И пытаются отладить в создании действия, которое он вызова или нет.

+0

Я пробовал почту, это не помогло. Я не имел в виду, что я вижу запросы GET для этого конкретного действия. Я имел в виду, что страница получает визуализацию снова все время, делая запросы GET на изображения, таблицы стилей и т. Д. Я вижу, что запрос на создание - это сообщение. он просто не использует AJAX – Kkulikovskis

+0

есть ли "#cart" div присутствует на странице? – sunil

0

Включите эти два JavaScript-файлы на вершине парциальное:

javascript_include_tag "jquery", "jquery_ujs" 
0

Кажется, вы забыли определить @cart в create действия. Просто добавьте @cart = current_cart

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