您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

88 行
2.2 KiB

  1. class OrdersController < ApplicationController
  2. include CurrentCart
  3. before_action :set_cart, only: [:new, :create]
  4. before_action :ensure_cart_isnt_empty, only: :new
  5. before_action :set_order, only: [:show, :edit, :update, :destroy]
  6. # GET /orders
  7. # GET /orders.json
  8. def index
  9. @orders = Order.all
  10. end
  11. # GET /orders/1
  12. # GET /orders/1.json
  13. def show
  14. end
  15. # GET /orders/new
  16. def new
  17. @order = Order.new
  18. end
  19. # GET /orders/1/edit
  20. def edit
  21. end
  22. # POST /orders
  23. # POST /orders.json
  24. def create
  25. @order = Order.new(order_params)
  26. @order.add_line_items_from_cart(@cart)
  27. respond_to do |format|
  28. if @order.save
  29. Cart.destroy(session[:cart_id])
  30. session[:cart_id] = nil
  31. format.html { redirect_to store_index_url, notice: 'Thank you for your order.' }
  32. format.json { render :show, status: :created, location: @order }
  33. else
  34. format.html { render :new }
  35. format.json { render json: @order.errors, status: :unprocessable_entity }
  36. end
  37. end
  38. end
  39. # PATCH/PUT /orders/1
  40. # PATCH/PUT /orders/1.json
  41. def update
  42. respond_to do |format|
  43. if @order.update(order_params)
  44. format.html { redirect_to @order, notice: 'Order was successfully updated.' }
  45. format.json { render :show, status: :ok, location: @order }
  46. else
  47. format.html { render :edit }
  48. format.json { render json: @order.errors, status: :unprocessable_entity }
  49. end
  50. end
  51. end
  52. # DELETE /orders/1
  53. # DELETE /orders/1.json
  54. def destroy
  55. @order.destroy
  56. respond_to do |format|
  57. format.html { redirect_to orders_url, notice: 'Order was successfully destroyed.' }
  58. format.json { head :no_content }
  59. end
  60. end
  61. private
  62. # Use callbacks to share common setup or constraints between actions.
  63. def set_order
  64. @order = Order.find(params[:id])
  65. end
  66. # Never trust parameters from the scary internet, only allow the white list through.
  67. def order_params
  68. params.require(:order).permit(:name, :address, :email, :pay_type)
  69. end
  70. def ensure_cart_isnt_empty
  71. if @cart.line_items.empty?
  72. redirect_to store_index_url, notice: 'Your cart is empty'
  73. end
  74. end
  75. end