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.
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...
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
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?
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"})
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
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)`
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.
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
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
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
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!
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
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"})
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)`
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.
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
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)
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..
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