[原创] rails用cookies实现购物车

rails cookies 购物车

2015-07-29 2261

rails用cookies实现购物车功能,把购物车信息通过json序列化存储在cookies中,再需要进行增删改的时候把json转成ruby对象进行操作。具体代码如下


helper中的代码

控制器中的代码


#购物车列表
  def cart_index
    @current_cart = current_cart
    page_head_data("购物车测试")
  end
  #更新购物车中指定产品的信息
  def update_cart
    add_to_cart(params[:id],params[:count])
    redirect_to '/common/cart_index'
  end
  #清空购物车
  def clear_cart
    clear_cart_data
  end
  #删除指定的产品
  def remove_from_cart
    delete_from_cart params[:id]
  end
视图中的代码就很简单了


cart_index.html.erb


<table>
  <%= form_tag('/common/update_cart',method: 'post',id:'validation_form',class:'form-horizontal',role:'form') do %>
      <tr><td>id</td><td><input type="text" name="id"/></td></tr>
      <tr><td>数量</td><td><input type="text" name="count"/></td></tr>
      <tr><td colspan="2">
        <button class="btn btn-primary" onclick="sub_form()">添加</button>
        <a class="btn btn-danger" data-remote="true" data-method="post" href="/common/clear_cart" data-confirm="确定清空购物车吗?">清空</a>
      </td></tr>
  <% end %>
</table>
<script type="text/javascript" charset="utf-8">
    function sub_form(){
        $("#validation_form").submit();
    }
</script>
<% if @current_cart.blank? %>
 <p>购物车暂无内容</p>
<% else %>

<table class="table">
  <tr>
    <th>id</th>
    <th>数量</th>
    <th>操作</th>
  </tr>
  <% @current_cart.each do |item| %>
  <tr>
    <td><%= item['id'] %></td>
    <td><%= item['count'] %></td>
    <td><a  data-remote="true" class="btn btn-danger btn-sm" data-method="post" href="/common/remove_from_cart?id=<%= item['id'] %>" data-confirm="确定要删除此商品?">删除</a></td>
  </tr>
  <% end %>
</table>

<% end %>
clear_cart.js.erb和remove_from_cart.js.erb中的代码很简单,就一句话执行页面刷新操作



window.location.reload();