2017-02-10 82 views
0

我是rails新手,我正在开发一个在线购物项目。我想在购物车中使用复选框让用户选择是否购买产品。但我不喜欢复选框旁边的提交按钮。我知道我必须使用ajax来更新数据库而无需提交按钮。但是我没有完成这项工作。以下是我的代码。Rails-使用复选框来更新数据库而无需提交按钮

这里是jQuery的阿贾克斯,

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

这是我的看法,第一TD是复选框

<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

试试下面的代码:

在JS:

$(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(anonymous)@ cart_change.self-e3000ed ... .js?body = 1 :15 dispatch @ jquery.self-bd7ddd3 ... .js?body = 1:5227 elemData.handle @jquery.self-bd7ddd3 ... .js?body = 1:4879 ' – lacfo

相关问题