我正在开发类似亚马逊的网站。
如果商品尚未在购物车中,它为登录用户(在商品显示页面上)提供了将商品添加到购物车的选项。用户点击“ 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'
尽管在单击“添加到购物车”按钮时,该项目被添加到购物车中并保留在项目显示页面上,但它会更改 url 从
http://localhost:3000/items/2
至
http://localhost:3000/items/2/add_to_cart
知道如何保持不变吗?另外,请让我知道是否有任何替代解决方案。