質問編集履歴

2

コードの修正

2020/07/12 08:01

投稿

kousuke24
kousuke24

スコア29

test CHANGED
@@ -1 +1 @@
1
- 親モデルのカラムをform_withで検索して取得したオブジェクトを表示したい
1
+ 親モデルのカラムをform_withで検索して取得したオブジェクトを一覧表示したい
test CHANGED
@@ -90,7 +90,19 @@
90
90
 
91
91
  elsif params[:name]
92
92
 
93
- Task.joins(:status).merge(Status.where(name: "#{params[:name]}"))
93
+ status = Status.where(name: "#{params[:name]}")
94
+
95
+ ids = status.all.ids
96
+
97
+ @task = []
98
+
99
+ ids.each do |id|
100
+
101
+ @task << Task.where(status_id: id)
102
+
103
+ end
104
+
105
+ @task.flatten
94
106
 
95
107
  elsif params[:sort] == 'create_desc'
96
108
 
@@ -122,88 +134,6 @@
122
134
 
123
135
 
124
136
 
125
- def new
126
-
127
- @task = Task.new
128
-
129
- end
130
-
131
-
132
-
133
- def create
134
-
135
- @task = Task.new(task_params)
136
-
137
- if @task.save
138
-
139
- flash[:notice] = 'タスクを作成しました'
140
-
141
- redirect_to task_path(@task)
142
-
143
- else
144
-
145
- flash.now[:alert] = 'タスクを作成できませんでした'
146
-
147
- render :new
148
-
149
- end
150
-
151
- end
152
-
153
-
154
-
155
- def edit
156
-
157
- @task = Task.find(params[:id])
158
-
159
- end
160
-
161
-
162
-
163
- def update
164
-
165
- @task = Task.find(params[:id])
166
-
167
- if @task.update(task_params)
168
-
169
- flash[:notice] = 'タスクを更新しました'
170
-
171
- redirect_to task_path
172
-
173
- else
174
-
175
- flash.now[:alert] = 'タスクを更新できませんでした'
176
-
177
- render :edit
178
-
179
- end
180
-
181
- end
182
-
183
-
184
-
185
- def destroy
186
-
187
- @task = Task.find(params[:id])
188
-
189
- if @task.destroy
190
-
191
- flash[:notice] = 'タスクを削除しました'
192
-
193
- redirect_to root_path
194
-
195
- else
196
-
197
- flash.now[:alert] = 'タスクを削除できませんでした'
198
-
199
- render :edit
200
-
201
- end
202
-
203
- end
204
-
205
-
206
-
207
137
  private
208
138
 
209
139
 
@@ -280,6 +210,8 @@
280
210
 
281
211
  ### ログ(development.log)
282
212
 
213
+ ※statusのnameをparamsで渡し、ステータスが完了のタスクを検索
214
+
283
215
  ```
284
216
 
285
217
  Started GET "/?utf8=%E2%9C%93&title=&name=%E7%9D%80%E6%89%8B%E4%B8%AD&commit=%E6%A4%9C%E7%B4%A2" for 172.19.0.1 at 2020-07-12 02:42:37 +0900
@@ -288,7 +220,7 @@
288
220
 
289
221
  Processing by TasksController#index as HTML
290
222
 
291
- Parameters: {"utf8"=>"✓", "title"=>"", "name"=>"着手中", "commit"=>"検索"}
223
+ Parameters: {"utf8"=>"✓", "title"=>"", "name"=>"完了", "commit"=>"検索"}
292
224
 
293
225
  Rendering tasks/index.html.erb within layouts/application
294
226
 
@@ -310,78 +242,10 @@
310
242
 
311
243
  ### 現状
312
244
 
313
- ・タイトルのみの検索は正常に動作しますが、ステータスを選択し検索すると何も表示されません。
245
+ ・タイトルのみの検索は正常に動作しますが、ステータスを選択し検索すると何も表示されません。
314
246
 
315
247
 
316
248
 
317
249
  ### 注意
318
250
 
319
251
  ・子モデル(task)から親モデル(status)を操作(新規作成、更新など)ができるように、子モデル(task.rb)に```accepts_nested_attributes_for :status```を記述しています。
320
-
321
-
322
-
323
- ### コンソール
324
-
325
- ・rails cでデータの確認をしました。
326
-
327
-
328
-
329
- ```
330
-
331
- # railsコンソール起動
332
-
333
- $ rails c
334
-
335
-
336
-
337
- # 指定したステータス名(完了)を持つタスク全てをtest変数に格納
338
-
339
- [1] pry(main)> test = Task.joins(:status).merge(Status.where(name: "完了"))
340
-
341
- => Task Load (1.2ms) SELECT "tasks".* FROM "tasks" INNER JOIN "statuses" ON "statuses"."id" = "tasks"."status_id" WHERE "statuses"."name" = $1 [["name", "完了"]]
342
-
343
- [#<Task:0x000055d9585f55a0
344
-
345
- id: 19,
346
-
347
- title: "完了",
348
-
349
- content: "",
350
-
351
- created_at: Thu, 09 Jul 2020 11:21:20 JST +09:00,
352
-
353
- updated_at: Sat, 11 Jul 2020 22:29:57 JST +09:00,
354
-
355
- deadline: Fri, 10 Jul 2020,
356
-
357
- status_id: 49>,
358
-
359
- #<Task:0x000055d9585f5280
360
-
361
- id: 48,
362
-
363
- title: "かんりょう",
364
-
365
- content: "",
366
-
367
- created_at: Sat, 11 Jul 2020 22:48:14 JST +09:00,
368
-
369
- updated_at: Sat, 11 Jul 2020 22:48:14 JST +09:00,
370
-
371
- deadline: Sat, 11 Jul 2020,
372
-
373
- status_id: 52>]
374
-
375
-
376
-
377
- # test変数に格納されている最初のタスクのタイトルを表示
378
-
379
- [2] pry(main)> test.first.title
380
-
381
- => "完了"
382
-
383
- ```
384
-
385
-
386
-
387
- コンソール上では正常に動作しているのですが、ビューでタイトルが表示できません。

1

コードの修正(コントローラー)、コンソールでデータの確認

2020/07/12 08:01

投稿

kousuke24
kousuke24

スコア29

test CHANGED
File without changes
test CHANGED
@@ -90,7 +90,7 @@
90
90
 
91
91
  elsif params[:name]
92
92
 
93
- Task.includes(:status).where(name: "#{params[:name]}")
93
+ Task.joins(:status).merge(Status.where(name: "#{params[:name]}"))
94
94
 
95
95
  elsif params[:sort] == 'create_desc'
96
96
 
@@ -312,10 +312,76 @@
312
312
 
313
313
  ・タイトルのみの検索は正常に動作しますが、ステータスを選択し検索すると、何も表示されません。
314
314
 
315
- ・コントローラーの ```Task.includes(:status).where(name: "#{params[:name]}")``` の書き方が間違っていると思うのですが、解決方法がわかりません。
316
-
317
315
 
318
316
 
319
317
  ### 注意
320
318
 
321
319
  ・子モデル(task)から親モデル(status)を操作(新規作成、更新など)ができるように、子モデル(task.rb)に```accepts_nested_attributes_for :status```を記述しています。
320
+
321
+
322
+
323
+ ### コンソール
324
+
325
+ ・rails cでデータの確認をしました。
326
+
327
+
328
+
329
+ ```
330
+
331
+ # railsコンソール起動
332
+
333
+ $ rails c
334
+
335
+
336
+
337
+ # 指定したステータス名(完了)を持つタスク全てをtest変数に格納
338
+
339
+ [1] pry(main)> test = Task.joins(:status).merge(Status.where(name: "完了"))
340
+
341
+ => Task Load (1.2ms) SELECT "tasks".* FROM "tasks" INNER JOIN "statuses" ON "statuses"."id" = "tasks"."status_id" WHERE "statuses"."name" = $1 [["name", "完了"]]
342
+
343
+ [#<Task:0x000055d9585f55a0
344
+
345
+ id: 19,
346
+
347
+ title: "完了",
348
+
349
+ content: "",
350
+
351
+ created_at: Thu, 09 Jul 2020 11:21:20 JST +09:00,
352
+
353
+ updated_at: Sat, 11 Jul 2020 22:29:57 JST +09:00,
354
+
355
+ deadline: Fri, 10 Jul 2020,
356
+
357
+ status_id: 49>,
358
+
359
+ #<Task:0x000055d9585f5280
360
+
361
+ id: 48,
362
+
363
+ title: "かんりょう",
364
+
365
+ content: "",
366
+
367
+ created_at: Sat, 11 Jul 2020 22:48:14 JST +09:00,
368
+
369
+ updated_at: Sat, 11 Jul 2020 22:48:14 JST +09:00,
370
+
371
+ deadline: Sat, 11 Jul 2020,
372
+
373
+ status_id: 52>]
374
+
375
+
376
+
377
+ # test変数に格納されている最初のタスクのタイトルを表示
378
+
379
+ [2] pry(main)> test.first.title
380
+
381
+ => "完了"
382
+
383
+ ```
384
+
385
+
386
+
387
+ コンソール上では正常に動作しているのですが、ビューでタイトルが表示できません。