Video není dostupné.
Omlouváme se.
Shopping Cart Order Sessions In Rails 7 With Turbo
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
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.
Excelete tutorial mister Dean, los curso estan sutitulados en ingles
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
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
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...
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!
What do you think about your purchase history?
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.
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
Find Any Answer?
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"})
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.
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)`
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?
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.
Same problem
and - undefined method `orderables' for nil:NilClass
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"})
My cart gets erased every time I navigate to a new page, any idea what might be happening here?
Missed an equal sign in the initialize_cart method..
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"!
Just replace : current_orderable.update(quantity:) for
current_orderable.update(quantity: current_orderable.quantity + quantity)
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