Video není dostupné.
Omlouváme se.

Shopping Cart Order Sessions In Rails 7 With Turbo

Sdílet
Vložit
  • čas přidán 18. 08. 2024
  • This video covers implementing a turbo based shopping cart order solution that persists through sessions
    Source: github.com/Dea...
    Join this channel to help support these videos:
    / @deanin
    Follow me on social media:
    linktr.ee/deanin
    Join this channel to get access to perks:
    / @deanin
    If you liked this video, please consider subscribing: t.co/RZ4EwP0F2a
    Timestamps
    0:00 Create The Shopping Cart, Product, and Orderable Models
    1:47 Setup Shopping Cart Routes
    3:13 Create A Session Based Shopping Cart Variable
    4:22 Rails 7 Shopping Cart On Multiple Pages
    5:29 The Shopping Cart Partial
    7:15 Setup The Product, Cart, and Orderable Model Relationships
    8:07 How To Calculate Total Order Price
    10:25 Add To Cart Button
    13:06 Display All Order Items In Shopping Cart
    16:11 Add And Remove Items From Shopping Cart
    19:03 Update Shopping Cart Without Refreshing In Rails 7
    22:45 Shopping Cart Show Page!
    #Deanin #Software #Programming

Komentáře • 23

  • @Deanin
    @Deanin  Před 2 lety +7

    Build a Linktree Clone Course learn.deanin.com/courses/build-a-linktree-on-rails
    Edit: As pointed out in the comments, your price could probably be an integer instead of a decimal, as that's how Stripe stores the value. Which means you'll have to convert for decimal displays.
    Had a few people contact me to say that the previous shopping cart tutorial doesn't work in Rails 7. So here's a bonus holiday video to hopefully address this ASAP.

    • @josbexerra8115
      @josbexerra8115 Před 2 lety

      Excelete tutorial mister Dean, los curso estan sutitulados en ingles

  • @vaibhavshankarjoshi
    @vaibhavshankarjoshi Před 2 lety +1

    How can we implement catagory and subcategories?
    also is it possible that we can make admin and user so that user can only bye things and admin can only add or remove catagory subcategories and products

  • @fugeeohu9357
    @fugeeohu9357 Před rokem

    What should I do with all the records in the orderables table after checkout is completed? Since there are many orderables to an order and I only want to create one row in the orders table

  • @SupeRails
    @SupeRails Před 2 lety +5

    0:44 why decimal, not integer? Stripe for example stores amounts in integer
    4:03 I would have used @cart = Cart.find_or_create_by(id: session[:cart_id]) - less code to write. or even better - create a cart only when the first product is being added to the cart. That way we don't have an empty cart for each session without added cart_items...

    • @Deanin
      @Deanin  Před 2 lety +2

      Combination of not knowing how Stripe stores it and wanting to cover how to set decimal precision lol. I'll update the pinned comment, thanks!

  • @Drill2411
    @Drill2411 Před 2 lety +1

    What do you think about your purchase history?

    • @Deanin
      @Deanin  Před 2 lety +3

      That's probably something that I would implement after setting up Stripe because stripe gives you the ability to request a user's payment history. Which is also a good way to validate that the user actually owns the product and hasn't done something fishy like issued a chargeback.
      I can take a look at setting something like that up for a potential part 2.

  • @scottm.2490
    @scottm.2490 Před 2 lety +1

    Hi at 17:35 you use the syntax `current_orderable.update(quantity:)` I was expecting `current_orderable.update(quantity: quantity)` could you help me better understand how `current_orderable.update(quantity:)` works and why you dont have to pass in the value? Thanks

    • @saadshoukat
      @saadshoukat Před rokem

      Find Any Answer?

    • @mefitdev
      @mefitdev Před rokem

      I just saw this, I was trying to find the same answer.
      Let say we have the following:
      custom_attribute = "foo"
      While calling a function, if we add the colon after the name of the variable, a new hash will be passed having the name of the variable as the hash key, and the value of the variable as the hash value.
      Like:
      function_call(custom_attribute:) == function_call({custom_attribute: "foo"})

    • @ddevulders
      @ddevulders Před 8 měsíci

      This is the new hash syntax introduced in Ruby 3 AFAIK. It's to adhere to the DRY principle (Do not repeat yourself) so instead of constantly calling method: method. you just say method:. This will automaticly invoke the local variable or method with the same name in it's specific scope.

    • @devatif
      @devatif Před 4 měsíci

      That's basically update in Ruby following the DRY principle, If you use RUBOCOP and write that syntax, it will automatically set to use the DRY principle i.e. `current_orderable.update(quantity:)` instead of `current_orderable.update(quantity: quantity)`

  • @danbenjamin5165
    @danbenjamin5165 Před 2 lety +1

    Excellent tutorial, but I'm getting an error cart_controller.rb:11: syntax error, unexpected ')'
    ...ent_orderable.update(quantity:) on any line that includes update(quantity:).
    Has anyone else run into this issue? @deanin?

    • @PaprykaKonserwowa
      @PaprykaKonserwowa Před 2 lety

      hi, I've updated Ruby, Rails, bundler and it works. Now I only have some issues with turbo but I'll investigate that part later.

    • @andrewkancev6035
      @andrewkancev6035 Před rokem

      Same problem

    • @andrewkancev6035
      @andrewkancev6035 Před rokem

      and - undefined method `orderables' for nil:NilClass

    • @mefitdev
      @mefitdev Před rokem

      If you don't want to update everything, you can just:
      .update(quantity: quantity).
      Explanation: (This works on newer rails, ruby, bundler versions)
      Let say we have the following:
      custom_attribute = "foo"
      While calling a function, if we add the colon after the name of the variable, a new hash will be passed having the name of the variable as the hash key, and the value of the variable as the hash value.
      Like:
      function_call(custom_attribute:) == function_call({custom_attribute: "foo"})

  • @joereeve2569
    @joereeve2569 Před rokem

    My cart gets erased every time I navigate to a new page, any idea what might be happening here?

    • @joereeve2569
      @joereeve2569 Před rokem

      Missed an equal sign in the initialize_cart method..

  • @kaygee1m
    @kaygee1m Před rokem

    When you add more of the same product, it needs to add to that quantity of that product, not replace it! Otherwise, it's not really an "add"!

    • @jhonnatasalencar4476
      @jhonnatasalencar4476 Před 9 měsíci

      Just replace : current_orderable.update(quantity:) for
      current_orderable.update(quantity: current_orderable.quantity + quantity)

  • @dianas1720
    @dianas1720 Před rokem

    Hi, I'm getting this error message and I want to cry, I have tried so many different solutions, but I'm still stucked! can you please help? NoMethodError in CartsController#remove
    undefined method `destroy' for nil:NilClass
    Extracted source (around line #20):
    def remove
    Orderable.find_by(id: params[:id]).destroy
    end
    end