2017-02-10 2 views
0

Я новичок в рельсах, и я работаю над онлайн-магазином. Я хочу использовать флажок в корзине покупок, чтобы пользователь мог выбрать, покупать ли продукт. Но мне не нравится кнопка отправки рядом с флажком. Я знаю, что я должен использовать ajax для обновления базы данных без кнопки отправки. Но я не сделал эту работу. Следующий мой код.Rails- Использование флажка для обновления базы данных без кнопки отправки

Вот JQuery Ajax,

$(document).ready(function(){ 
    $(".checkbox_submit").change(function(){ 
     $.ajax({url: {:action => create}, success: function(result){ 
      $(this).parents('form:first').submit(); 
     }}); 
    }); 
}); 

И это мой взгляд, первый тд является флажок

<tr> 
    <td style="width: 5%;"> 
     <%= form_for cart_item, url: cart_item_path(cart_item.product_id), remote: true do |f| %> 
      <%= f.check_box(:buy_now, class: "checkbox_submit") %> 
     <% end %> 
    </td> 
    <td style="width: 20%;" > 
     <%= link_to(product_path(cart_item.product)) do %><%= image_tag(cart_item.product.image.thumb.url) %><% end %> 
    </td> 
    <td style="width: 30%;"><%= link_to(cart_item.product.title, product_path(cart_item.product)) %></td> 
    <td><%= cart_item.product.price %></td> 
    <td> 
     <%= form_for cart_item, url: cart_item_path(cart_item.product_id, remote: true) do |f| %> 
      <%= f.select :quantity, 1..cart_item.product.storage, class: "select_submit" %> 
     <% end %> 
    </td> 
    <td><strong>¥<%= cart_item.product.price * cart_item.quantity %></strong></td> 
    <td><%= link_to(cart_item_path(cart_item.product_id), method: :delete) do %><i class="fa fa-trash-o" aria-hidden="true"></i><% end %></td> 
</tr> 

И это мой контроллер

def update 
     @cart = current_cart 
     @cart_item = @cart.cart_items.find_by(product_id: params[:id]) 
     if @cart_item.product.storage >= cart_item_params[:quantity].to_i 
      @cart_item.update(cart_item_params) 
      redirect_to carts_path 
     else 
      redirect_to carts_path, alert: "exceed the storage" 
     end 

end 

Могли кто-нибудь поможет мне в этом? Заранее спасибо!

+0

что это ошибка, которую вы получаете? – jithya

+0

Когда я нажимаю на этот флажок, ничего не происходит с базой данных. – lacfo

+0

Что такое ошибка js? это запрос, передаваемый контроллеру? – jithya

ответ

0

Try ниже код:

В ЯШ:

$(document).ready(function(){ 
    $(".checkbox_submit").change(function(){ 
     var src = $(this); 
     $.ajax({ 
      type: "post", 
      url: "/sava_data", 
      success: function(result){ 
      src.parents('form:first').submit(); 
     }}); 
    }); 
}); 

В конфигурации/routes.rb

post '/save_data' => 'controller_name#action' 
+0

Большое спасибо! Это лучше, чем моя оригинальная, но все еще есть ошибка. 'POST http: // localhost: 3000/save_data 500 (Внутренняя ошибка сервера)' – lacfo

+0

вы можете отправить мне журналы ошибок – puneet18

+0

Вы имеете в виду это? 'send @ jquery.self-bd7ddd3 ... .js? body = 1: 10255 ajax @ jquery.self-bd7ddd3 ... .js? body = 1: 9739 (анонимно) @ cart_change.self-e3000ed ... .js? body = 1 : 15 рассылка @ jquery.self-bd7ddd3 ... .js? Body = 1: 5227 elemData.handle @ jquery.self-bd7ddd3 ... .js? Body = 1: 4879 ' – lacfo

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