Class: Spree::OrdersController
- Inherits:
-
StoreController
- Object
- StoreController
- Spree::OrdersController
- Defined in:
- app/controllers/spree/orders_controller.rb
Instance Method Summary collapse
- #accurate_title ⇒ Object
-
#edit ⇒ Object
Shows the current incomplete order from the session.
- #empty ⇒ Object
-
#populate ⇒ Object
Adds a new item to the order (creating a new order if none already exists).
- #populate_redirect ⇒ Object
- #show ⇒ Object
- #update ⇒ Object
Instance Method Details
#accurate_title ⇒ Object
95 96 97 98 99 100 101 |
# File 'app/controllers/spree/orders_controller.rb', line 95 def accurate_title if @order && @order.completed? t('spree.order_number', number: @order.number) else t('spree.shopping_cart') end end |
#edit ⇒ Object
Shows the current incomplete order from the session
39 40 41 42 43 44 45 46 47 |
# File 'app/controllers/spree/orders_controller.rb', line 39 def edit @order = current_order(build_order_if_necessary: true) :edit, @order, .signed[:guest_token] associate_user if params[:id] && @order.number != params[:id] flash[:error] = t('spree.cannot_edit_orders') redirect_to cart_path end end |
#empty ⇒ Object
86 87 88 89 90 91 92 93 |
# File 'app/controllers/spree/orders_controller.rb', line 86 def empty if @order = current_order :update, @order, .signed[:guest_token] @order.empty! end redirect_to spree.cart_path end |
#populate ⇒ Object
Adds a new item to the order (creating a new order if none already exists)
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'app/controllers/spree/orders_controller.rb', line 50 def populate @order = current_order(create_order_if_necessary: true) :update, @order, .signed[:guest_token] variant = Spree::Variant.find(params[:variant_id]) quantity = params[:quantity].present? ? params[:quantity].to_i : 1 # 2,147,483,647 is crazy. See issue https://github.com/spree/spree/issues/2695. if !quantity.between?(1, 2_147_483_647) @order.errors.add(:base, t('spree.please_enter_reasonable_quantity')) else begin @line_item = @order.contents.add(variant, quantity) rescue ActiveRecord::RecordInvalid => error @order.errors.add(:base, error.record.errors..join(", ")) end end respond_with(@order) do |format| format.html do if @order.errors.any? flash[:error] = @order.errors..join(", ") redirect_back(fallback_location: spree.root_path) return else redirect_to cart_path end end end end |
#populate_redirect ⇒ Object
81 82 83 84 |
# File 'app/controllers/spree/orders_controller.rb', line 81 def populate_redirect flash[:error] = t('spree.populate_get_error') redirect_to spree.cart_path end |
#show ⇒ Object
14 15 16 17 |
# File 'app/controllers/spree/orders_controller.rb', line 14 def show @order = Spree::Order.find_by!(number: params[:id]) :show, @order, .signed[:guest_token] end |
#update ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/controllers/spree/orders_controller.rb', line 19 def update :update, @order, .signed[:guest_token] if @order.contents.update_cart(order_params) @order.next if params.key?(:checkout) && @order.cart? respond_with(@order) do |format| format.html do if params.key?(:checkout) redirect_to checkout_state_path(@order.checkout_steps.first) else redirect_to cart_path end end end else respond_with(@order) end end |