0

我正在开发类似亚马逊的网站。

如果商品尚未在购物车中,它为登录用户(在商品显示页面上)提供了将商品添加到购物车的选项。用户点击“ 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

知道如何保持不变吗?另外,请让我知道是否有任何替代解决方案。

4

0 回答 0