Class: Spree::LineItemsController
- Inherits:
-
StoreController
- Object
- BaseController
- StoreController
- Spree::LineItemsController
- Includes:
- CartMethods
- Defined in:
- app/controllers/spree/line_items_controller.rb
Instance Method Summary collapse
Methods inherited from StoreController
#current_taxon, #default_products_sort, #permitted_products_params, #products_filters_params, #render_404_if_store_not_exists, #store_filter_names, #store_filter_names_hash
Methods included from AnalyticsHelper
#analytics_event_handlers, #track_event, #unsupported_event?, #visitor_id
Methods included from WishlistHelper
Methods included from PasswordProtected
Methods included from StorefrontHelper
#as_aspect_ratio, #page_description, #page_image, #paths_equal?, #render_storefront_partials, #show_account_pane?, #svg_country_icon, #tailwind_classes_for
Methods included from ThemeConcern
#default_url_options, #set_theme_view_paths
Instance Method Details
#create ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'app/controllers/spree/line_items_controller.rb', line 13 def create @order = current_order(create_order_if_necessary: true) @quantity = params[:quantity].to_i || 1 = params[:options] || {} .permanent.signed[:token] = { value: @order.token, domain: current_store.url_or_custom_domain } if @order.persisted? result = cart_add_item_service.call(order: @order, variant: @variant, quantity: @quantity, options: ) @line_item = result.value if result.success? load_line_items track_event('product_added', { line_item: @line_item }) else @error = result.value.errors..to_sentence flash.now[:error] = @error end respond_to do |format| format.turbo_stream format.html { redirect_to spree.cart_path(order_token: order_token) } end end |
#destroy ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'app/controllers/spree/line_items_controller.rb', line 59 def destroy result = cart_remove_line_item_service.call(order: @order, line_item: @line_item) if result.success? load_line_items track_event('product_removed', { line_item: @line_item }) else @error = result.value.errors..to_sentence flash.now[:error] = @error end respond_to do |format| format.turbo_stream format.html { redirect_to spree.cart_path(order_token: order_token) } end end |
#update ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'app/controllers/spree/line_items_controller.rb', line 42 def update quantity = line_item_params[:quantity]&.to_i || 1 result = cart_set_item_quantity_service.call(order: @order, line_item: @line_item, quantity: quantity) if result.success? load_line_items else @error = result.value.errors..to_sentence flash.now[:error] = @error end respond_to do |format| format.turbo_stream format.html { redirect_to spree.cart_path(order_token: order_token) } end end |