質問編集履歴

8

変更

2020/12/21 14:47

投稿

is02
is02

スコア17

test CHANGED
File without changes
test CHANGED
@@ -645,3 +645,71 @@
645
645
  has_many :carts, through: :cart_items
646
646
 
647
647
  ```
648
+
649
+
650
+
651
+ ### 12/21追記
652
+
653
+ 以下のように変更したら、とりあえずカートページに商品を追加することができました。
654
+
655
+ ####cart.rb
656
+
657
+ ```
658
+
659
+ belongs_to :user
660
+
661
+ has_many :cart_items
662
+
663
+ ```
664
+
665
+
666
+
667
+ ####cart_item.rb
668
+
669
+ ```
670
+
671
+ belongs_to :product
672
+
673
+ belongs_to :cart
674
+
675
+ ```
676
+
677
+
678
+
679
+ ####product.rb
680
+
681
+ ```
682
+
683
+ has_many :cart_items
684
+
685
+ ```
686
+
687
+
688
+
689
+ ####cart_controller.rb
690
+
691
+ ```
692
+
693
+ def index
694
+
695
+ @cart = current_user.cart
696
+
697
+ @cart_items = @cart.cart_items
698
+
699
+ end
700
+
701
+
702
+
703
+ def add_item
704
+
705
+ @cart = current_user.cart
706
+
707
+ @cart_item = @cart.cart_items.build(product_id: params[:product_id])
708
+
709
+ @cart_item.save
710
+
711
+ redirect_to carts_path
712
+
713
+ end
714
+
715
+ ```

7

関連付けの定義

2020/12/21 14:47

投稿

is02
is02

スコア17

test CHANGED
File without changes
test CHANGED
@@ -605,3 +605,43 @@
605
605
 
606
606
 
607
607
  ご教授いただけますと幸いです。
608
+
609
+
610
+
611
+ ###関連付け
612
+
613
+ user.rb
614
+
615
+ ```
616
+
617
+ has_one :cart, dependent: :destroy
618
+
619
+ accepts_nested_attributes_for :cart
620
+
621
+ ```
622
+
623
+
624
+
625
+ cart.rb
626
+
627
+ ```
628
+
629
+ class Cart < ApplicationRecord
630
+
631
+ belongs_to :user
632
+
633
+ has_many :products, through: :cart_items
634
+
635
+ end
636
+
637
+ ```
638
+
639
+
640
+
641
+ product.rb
642
+
643
+ ```
644
+
645
+ has_many :carts, through: :cart_items
646
+
647
+ ```

6

追記

2020/12/09 05:08

投稿

is02
is02

スコア17

test CHANGED
File without changes
test CHANGED
@@ -528,6 +528,8 @@
528
528
 
529
529
  @cart = @user.build_cart
530
530
 
531
+ @cart.save
532
+
531
533
  @user.save
532
534
 
533
535
  end

5

追記

2020/12/07 13:32

投稿

is02
is02

スコア17

test CHANGED
File without changes
test CHANGED
@@ -528,7 +528,7 @@
528
528
 
529
529
  @cart = @user.build_cart
530
530
 
531
- user.save
531
+ @user.save
532
532
 
533
533
  end
534
534
 

4

追記

2020/12/07 13:30

投稿

is02
is02

スコア17

test CHANGED
File without changes
test CHANGED
@@ -598,6 +598,8 @@
598
598
 
599
599
  上記のように記載すると`undefined method cart_items for 2:Integer`という表示が出てしまいます。
600
600
 
601
+ おそらく、@user.cart.idがただの整数値だからひっぱってこれていないのかと思っています
602
+
601
603
 
602
604
 
603
605
  ご教授いただけますと幸いです。

3

追記

2020/12/07 13:21

投稿

is02
is02

スコア17

test CHANGED
File without changes
test CHANGED
@@ -580,11 +580,11 @@
580
580
 
581
581
  def add_item
582
582
 
583
- user = User.find(params[:id])
583
+ @user = current_user
584
-
584
+
585
- @cart = user.cart
585
+ @cart = @user.cart.id
586
-
586
+
587
- @cart_item = User.cart.cart_items.build(product_id: params[:product_id]) if @cart_item.blank?
587
+ @cart_item = @cart.cart_items.build(product_id: params[:product_id]) if @cart_item.blank?
588
588
 
589
589
  @cart_item.save
590
590
 
@@ -596,6 +596,8 @@
596
596
 
597
597
  ```
598
598
 
599
+ 上記のように記載すると`undefined method cart_items for 2:Integer`という表示が出てしまいます。
600
+
599
601
 
600
602
 
601
603
  ご教授いただけますと幸いです。

2

new削除

2020/12/07 13:19

投稿

is02
is02

スコア17

test CHANGED
File without changes
test CHANGED
@@ -520,24 +520,14 @@
520
520
 
521
521
  ```
522
522
 
523
- def new
523
+ def create
524
+
524
-
525
+ super
526
+
525
- @user = User.new
527
+ @user = User.new(configure_sign_up_params)
526
528
 
527
529
  @cart = @user.build_cart
528
530
 
529
- end
530
-
531
-
532
-
533
- # POST /resource
534
-
535
- def create
536
-
537
- super
538
-
539
- user = User.new(configure_sign_up_params)
540
-
541
531
  user.save
542
532
 
543
533
  end

1

追記

2020/12/07 13:03

投稿

is02
is02

スコア17

test CHANGED
File without changes
test CHANGED
@@ -511,3 +511,101 @@
511
511
  【ECサイトのカート機能】
512
512
 
513
513
  ・https://qiita.com/kenzo-ta/items/b45994c5f3fdd87b6c50
514
+
515
+
516
+
517
+ ###追記(2020/12/07)
518
+
519
+ users/registrations_controller.rb
520
+
521
+ ```
522
+
523
+ def new
524
+
525
+ @user = User.new
526
+
527
+ @cart = @user.build_cart
528
+
529
+ end
530
+
531
+
532
+
533
+ # POST /resource
534
+
535
+ def create
536
+
537
+ super
538
+
539
+ user = User.new(configure_sign_up_params)
540
+
541
+ user.save
542
+
543
+ end
544
+
545
+ ```
546
+
547
+
548
+
549
+ これを追加すると、rails cで確認した時に、Cartにuser_idが入っているのですが、
550
+
551
+
552
+
553
+ Product/show.erb
554
+
555
+ ```
556
+
557
+ <h1>商品詳細</h1>
558
+
559
+
560
+
561
+ 商品名:<%= @product.name %><br>
562
+
563
+ 商品説明文:<%= @product.description %><br>
564
+
565
+
566
+
567
+ <%= button_to "カートに入れる", add_item_path(product_id: @product.id) %>
568
+
569
+ ```
570
+
571
+
572
+
573
+ 商品詳細のカートに入れるを押したあと、Carts#additemにて、user.cartを取得する方法がわかりません。
574
+
575
+
576
+
577
+ ```
578
+
579
+ class CartsController < ApplicationController
580
+
581
+
582
+
583
+ def show
584
+
585
+ @cart = Cart.find(params[:id])
586
+
587
+ end
588
+
589
+
590
+
591
+ def add_item
592
+
593
+ user = User.find(params[:id])
594
+
595
+ @cart = user.cart
596
+
597
+ @cart_item = User.cart.cart_items.build(product_id: params[:product_id]) if @cart_item.blank?
598
+
599
+ @cart_item.save
600
+
601
+ redirect_to cart_path
602
+
603
+ end
604
+
605
+ end
606
+
607
+ ```
608
+
609
+
610
+
611
+ ご教授いただけますと幸いです。