質問編集履歴

1

task一覧のためのcontroller

2020/06/03 01:36

投稿

iwashita
iwashita

スコア3

test CHANGED
File without changes
test CHANGED
@@ -100,6 +100,336 @@
100
100
 
101
101
 
102
102
 
103
+ 頂いたご質問への追加です。
104
+
105
+
106
+
107
+ 1)Tasklistは間違って作成してしまったモデルファイルかもしれません。
108
+
109
+ 存在しているタスクモデルに追加でユーザとの一対多の関係を保持するカラムを用意する際に間違ってマイグレーション**rails g migration Add-To-**を行ってしまい、その際にモデルファイルの作成もも行ったとは思うのですが、はっきりどのファイルを間違って作成したのかは覚えておらず、**rails migrate:reset**は実行しているのと、覚えている限りの作成したファイルは削除しています。
110
+
111
+
112
+
113
+ 2)tasks_controller.rb
114
+
115
+ ```ここに言語を入力
116
+
117
+ class TasksController < ApplicationController
118
+
119
+ before_action :require_user_logged_in
120
+
121
+ before_action :correct_user, only: [:destroy]
122
+
123
+
124
+
125
+ def index
126
+
127
+ @tasklists = Task.order(id: :desc).page(params[:page]).per(3)
128
+
129
+ end
130
+
131
+
132
+
133
+ def show
134
+
135
+ end
136
+
137
+
138
+
139
+ def new
140
+
141
+ @task = Task.new
142
+
143
+ end
144
+
145
+
146
+
147
+ def create
148
+
149
+ @task = current_user.tasks.build(task_params)
150
+
151
+
152
+
153
+ if @task.save
154
+
155
+ flash[:success] = "タスクが正常に登録されました"
156
+
157
+ redirect_to root_url
158
+
159
+ else
160
+
161
+ @tasks = current_user.tasks.order(id: :desc).page(params[:page])
162
+
163
+ flash.now[:danger] = "タスクが登録されませんでした"
164
+
165
+ render :new
166
+
167
+ end
168
+
169
+ end
170
+
171
+
172
+
173
+ def edit
174
+
175
+ end
176
+
177
+
178
+
179
+ def destroy
180
+
181
+ @task.destroy
182
+
183
+ flash[:success] = 'タスクを削除しました。'
184
+
185
+ redirect_back(fallback_location: root_path)
186
+
187
+ end
188
+
189
+
190
+
191
+ private
192
+
193
+
194
+
195
+ def set_task
196
+
197
+ @task = Task.find(params[:id])
198
+
199
+ end
200
+
201
+
202
+
203
+ def task_params
204
+
205
+ params.require(:task).permit(:content, :status)
206
+
207
+ end
208
+
209
+
210
+
211
+ def correct_user
212
+
213
+ @task = current_user.tasks.find_by(id: params[:id])
214
+
215
+ unless @task
216
+
217
+ redirect_to root_url
218
+
219
+ end
220
+
221
+ end
222
+
223
+ end
224
+
225
+
226
+
227
+ ```
228
+
229
+
230
+
231
+ 併せてマイグレーションファイル作成後に変更、作成したファイルのコードも載せさせてもらいます。
232
+
233
+
234
+
235
+ config/routes.rb
236
+
237
+ ```ここに言語を入力
238
+
239
+ Rails.application.routes.draw do
240
+
241
+ # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
242
+
243
+ root to: 'tasks#index'
244
+
245
+
246
+
247
+ get 'login', to: 'sessions#new'
248
+
249
+ post 'login', to: 'sessions#create'
250
+
251
+ delete 'logout', to: 'sessions#destroy'
252
+
253
+
254
+
255
+ resources :tasks
256
+
257
+
258
+
259
+ get 'signup', to: 'users#new'
260
+
261
+ resources :users, only: [:index, :show, :new, :create]
262
+
263
+
264
+
265
+ resources :tasks, only: [:create, :destroy]
266
+
267
+ end
268
+
269
+ ```
270
+
271
+ tasks/_tasks.html.erb
272
+
273
+ ```ここに言語を入力
274
+
275
+ <ul class="list-unstyled">
276
+
277
+
278
+
279
+ <% tasks.each do |task| %>
280
+
281
+
282
+
283
+ <li class="media mb-3">
284
+
285
+ <img class="mr-2 rounded" src="
286
+
287
+ <%= gravater_url(task.user, { size: 50 }) %>
288
+
289
+ " alt="">
290
+
291
+ <div class="media-body">
292
+
293
+ <div>
294
+
295
+
296
+
297
+ <%= link_to task.user.name, user_path(task.user) %>
298
+
299
+ <span class="text-muted">posted at
300
+
301
+ <%= task.created_at %>
302
+
303
+ </span>
304
+
305
+ </div>
306
+
307
+ <div>
308
+
309
+ <p class="mb=0">
310
+
311
+ <%= task.content %>
312
+
313
+ </p>
314
+
315
+ </div>
316
+
317
+ <div>
318
+
319
+
320
+
321
+ <%= if current_user == task.user %>
322
+
323
+
324
+
325
+ <%= link_to "Delete", task, method: :delete, data: { confirm: "You sure?" }, class: "btn btn-danger btn-sm" %>
326
+
327
+
328
+
329
+ <% end %>
330
+
331
+
332
+
333
+ </div>
334
+
335
+ </div>
336
+
337
+ </li>
338
+
339
+
340
+
341
+ <% end %>
342
+
343
+
344
+
345
+ <%= paginate tasks %>
346
+
347
+
348
+
349
+ </ul>
350
+
351
+ ```
352
+
353
+
354
+
355
+ toppages/index.html.erb
356
+
357
+ ```ここに言語を入力
358
+
359
+ <% if logged_in? %>
360
+
361
+
362
+
363
+ <div class="row">
364
+
365
+ <aside class="col-sm-4">
366
+
367
+
368
+
369
+ <%= form_with(model: @tasklist, local: true) do |f| %>
370
+
371
+
372
+
373
+ <div class="form-group">
374
+
375
+
376
+
377
+ <%= f.text_area :content, class: 'form-control', rows: 5 %>
378
+
379
+
380
+
381
+ </div>
382
+
383
+
384
+
385
+ <%= f.submit 'Post', class: 'btn btn-primary btn-block' %>
386
+
387
+
388
+
389
+ <% end %>
390
+
391
+
392
+
393
+ </aside>
394
+
395
+ <div class="col-sm-8">
396
+
397
+
398
+
399
+ <%= render 'tasklists/tasklists', tasklists: @tasklists %>
400
+
401
+
402
+
403
+ </div>
404
+
405
+ </div>
406
+
407
+
408
+
409
+ <div class="center jumbotron">
410
+
411
+ <div class="text-center">
412
+
413
+ <hi>Welcome to the Tasklists</hi>
414
+
415
+
416
+
417
+ <%= link_to 'Sign up now!', signup_path, class: 'btn btn-lg btn-primary' %>
418
+
419
+
420
+
421
+ </div>
422
+
423
+ </div>
424
+
425
+ <% end %>
426
+
427
+ ```
428
+
429
+
430
+
431
+ 宜しくお願い致します。
432
+
103
433
 
104
434
 
105
435
  ### 補足情報(FW/ツールのバージョンなど)