質問編集履歴

2

初心者マークをつけた

2020/03/01 10:37

投稿

mikkiBA
mikkiBA

スコア4

test CHANGED
File without changes
test CHANGED
@@ -28,15 +28,15 @@
28
28
 
29
29
 
30
30
 
31
- ### 発生している問題
31
+ ### 発生している問題
32
-
33
-
34
-
32
+
33
+
34
+
35
- ```
35
+ ```
36
-
36
+
37
- review star average:
37
+ review star average:{1=>0.45e1, 2=>0.2e1}
38
-
38
+
39
- スター数の平均値が表示されな
39
+ コメントしたidと同じidのみのスター数の平均表示させた
40
40
 
41
41
  ```
42
42
 

1

質問内容修正

2020/03/01 10:37

投稿

mikkiBA
mikkiBA

スコア4

test CHANGED
@@ -1 +1 @@
1
- railsでカラムの平均値表示されな
1
+ railsでカラムの平均値をidごとに表示させた
test CHANGED
@@ -20,9 +20,9 @@
20
20
 
21
21
  レビュー対象と同じarticle_idを持つデータから平均値出し、表示させたいのですが
22
22
 
23
- エラものの、値が何も表示されせん
23
+ 全てのレビュ作品のスター平均をしてしまいま
24
-
24
+
25
- どうすればReviewテーブルのrestarsカラムの平均値を表示させることができるでしょうか。
25
+ どうすれば作品ごとにrestarsカラムの平均値を表示させることができるでしょうか。
26
26
 
27
27
  教えていただけると大変助かります。
28
28
 
@@ -48,19 +48,47 @@
48
48
 
49
49
  reviewsite/app/controllers
50
50
 
51
- reviews_controller.rb
51
+ articles_controller.rb
52
-
52
+
53
- ```
53
+ ```
54
-
54
+
55
- class ReviewsController < ApplicationController
55
+ class ArticlesController < ApplicationController
56
+
56
-
57
+ def index
58
+
57
-
59
+ @articles = Article.all
60
+
61
+ @latest = Article.order(created_at: :desc).take
62
+
63
+ #limitはアクティブレコードのメソッドなので、帰ってくるのが配列じゃない
64
+
65
+ #@latest02 = Article.order(created_at: :desc).limit(1)
66
+
67
+ end
68
+
69
+ #Railsではコントローラのインスタンス変数はすべてビューに渡されるようになっている
58
70
 
59
71
  def show
60
72
 
61
- @article = Article.find(params[:article_id])
73
+ @article = Article.find(params[:id])
62
-
74
+
63
- @starave = Review.where(article_id: @article).average(:restars)
75
+ @starave = Review.group(:article_id).average(:restars)
76
+
77
+ end
78
+
79
+
80
+
81
+ def new
82
+
83
+ @article = Article.new
84
+
85
+ end
86
+
87
+
88
+
89
+ def edit
90
+
91
+ @article = Article.find(params[:id])
64
92
 
65
93
  end
66
94
 
@@ -68,44 +96,84 @@
68
96
 
69
97
  def create
70
98
 
99
+ #render plain: params[:article].inspectで見た取り出したい属性はparams[:article]の中にある
100
+
101
+ #パラメータを安全に扱うために許可かつ必須にする
102
+
103
+ #@Article = Article.new(params.require(:article).permit(:title, :text))
104
+
105
+ @article = Article.new(article_params)
106
+
107
+
108
+
109
+ #このモデルをデータベースに保存
110
+
111
+ if @article.save
112
+
113
+ redirect_to @article
114
+
115
+ else
116
+
117
+ render 'new' #newテンプレートに対するrenderを実行
118
+
119
+ end
120
+
121
+ end
122
+
123
+
124
+
125
+ def update
126
+
71
- @article = Article.find(params[:article_id])
127
+ @article = Article.find(params[:id])
72
-
128
+
129
+
130
+
73
- @review = @article.reviews.create(review_params)
131
+ if @article.update(article_params)
132
+
74
-
133
+ redirect_to @article
134
+
135
+ else
136
+
137
+ render 'edit'
138
+
139
+ end
140
+
141
+ end
142
+
143
+
144
+
145
+ def destroy
146
+
147
+ @article = Article.find(params[:id])
148
+
149
+ @article.destroy
150
+
151
+
152
+
153
+ #削除後にindexアクションにリダイレクト
154
+
75
- redirect_to article_path(@article)
155
+ redirect_to articles_path
76
156
 
77
157
  end
78
158
 
159
+
160
+
79
-
161
+ #他のアクションでも便利に使えるように、この許可と必須メソッドをくくり出す。不正呼び出し防止のため、private宣言
162
+
80
-
163
+ private
164
+
81
- def destroy
165
+ def article_params
82
-
83
- @article = Article.find(params[:article_id])
166
+
84
-
85
- @review = @article.reviews.find(params[:id])
86
-
87
- @review.destroy
88
-
89
- redirect_to article_path(@article)
167
+ params.require(:article).permit(:title, :text)
90
-
168
+
91
- end
169
+ end
92
-
93
-
94
-
95
- private
96
-
97
- #カラム追加した後ここの許可を忘れるとストロングパラメータに引っかかってDBに保存できない
98
-
99
- def review_params
100
-
101
- params.require(:review).permit(:commenter, :body, :restars)
102
-
103
- end
104
170
 
105
171
  end
106
172
 
107
173
 
108
174
 
175
+
176
+
109
177
  ```
110
178
 
111
179
  reviewsite/app/views/articles