我正在亚马逊网站上工作。
如果项目不在购物车中,它会为登录用户(在项目显示页面上)选项将项目添加到购物车。用户点击“Add to cart
”按钮,该项目已添加到购物车,但该用户仍保留在该项目的展示页面上。
如果该商品已添加到购物车,则会显示“Remove from Cart
”按钮。当用户单击该按钮时,该项目将从购物车中删除,但用户不会重定向到新页面。他仍留在该项目的展示页面上。
我是Rails的新手,所以我一直在尝试很多方法来完成这项工作。
代码:
/app/models/user.rb
has_and_belongs_to_many :items
/app/models/item.rb
has_and_belongs_to_many :users
/app/controllers/items_controller.rb
def add_to_cart
@item = Item.find(params[:id])
@user = current_user
@user.items << @item
render 'show'
end
def remove_from_cart
@item = Item.find(params[:id])
@user = current_user
@user.items.delete(@item)
render 'show'
end
/app/views/items/show.rb
<tr>
<% if user_signed_in? then %>
<% if !current_user.items.include?(@item)then %>
<%= button_to "Add to Cart", add_to_cart_path(:id => @item.id) %>
<% else %>
<%= button_to "Remove from Cart", remove_from_cart_path(:id => @item.id ) %>
<% end %>
<% end %>
</tr>
/config/routes.rb
post '/items/:id/add_to_cart' => 'items#add_to_cart', :as => 'add_to_cart'
post '/items/:id/remove_from_cart' => 'items#remove_from_cart' , :as => 'remove_from_cart'
虽然点击“添加到购物车”按钮,该商品会添加到购物车中并保留在商品展示页面上,但会更改网址
http://localhost:3000/items/2
到
http://localhost:3000/items/2/add_to_cart
知道怎么能保持不变? 另外,如果有任何其他解决方案,请告诉我。