回答編集履歴

2

編集

2021/01/01 23:56

投稿

katahik
katahik

スコア79

test CHANGED
@@ -1,3 +1,7 @@
1
+ hoshi-takanori 様のご指摘どおり記述したら、無事実装できました。ありがとうございました。
2
+
3
+
4
+
1
5
  top.html.erb
2
6
 
3
7
  ```ここに言語を入力

1

編集

2021/01/01 23:56

投稿

katahik
katahik

スコア79

test CHANGED
@@ -19,3 +19,59 @@
19
19
  <% end %>
20
20
 
21
21
  ```
22
+
23
+
24
+
25
+ competitions_controller.rb
26
+
27
+ ```ここに言語を入力
28
+
29
+ def top
30
+
31
+ # Competitionモデルの中で、period_startが今日以前で、なおかつ、
32
+
33
+ # period_endが今日以降をin_session_competitionに格納する
34
+
35
+ in_session_competition =
36
+
37
+ Competition.find_by(period_start: -Float::INFINITY..Date.today,period_end: Date.today..Float::INFINITY)
38
+
39
+
40
+
41
+ # topページから渡ってきた/:idを@paramsに格納
42
+
43
+ @params=params[:id]
44
+
45
+ # paramsが渡ってきたかどうかで場合分け
46
+
47
+ # /にアクセスした場合と、2回目以降にアクセスした場合(パラメータに値が入っている場合)
48
+
49
+ if @params.nil?
50
+
51
+ # 今日開催中の大会のitemsをRANDOMメソッドで並び替え、その中の2つを@random_itemsに入れて、テンプレートへ渡す
52
+
53
+ @random_items =in_session_competition.items.order("RANDOM()").limit(2)
54
+
55
+
56
+
57
+ else
58
+
59
+ # idを頼りに該当のitemを探す
60
+
61
+ @selected_item = Item.find(@params)
62
+
63
+ # そのアイテムのpointsカラムに+1
64
+
65
+ @selected_item.points += 1
66
+
67
+ # 保存
68
+
69
+ @selected_item.save
70
+
71
+ # 今日開催中の大会のitemsをRANDOMメソッドで並び替え、その中の2つを@random_itemsに入れて、テンプレートへ渡す
72
+
73
+ @random_items = in_session_competition.items.order("RANDOM()").limit(2)
74
+
75
+ end
76
+
77
+ ```