質問編集履歴
2
コードの修正
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
|
-
|
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"=>"
|
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
コードの修正(コントローラー)、コンソールでデータの確認
test
CHANGED
File without changes
|
test
CHANGED
@@ -90,7 +90,7 @@
|
|
90
90
|
|
91
91
|
elsif params[:name]
|
92
92
|
|
93
|
-
Task.in
|
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
|
+
コンソール上では正常に動作しているのですが、ビューでタイトルが表示できません。
|