質問編集履歴

5

修正

2024/08/18 13:52

投稿

gabakugik
gabakugik

スコア13

test CHANGED
@@ -1 +1 @@
1
- next.jsでEditとshow仕方が分から
1
+ next.jsでEditボタンを押すloading...にってしまう。
test CHANGED
File without changes

4

修正

2024/08/17 17:28

投稿

gabakugik
gabakugik

スコア13

test CHANGED
File without changes
test CHANGED
@@ -16,12 +16,13 @@
16
16
  ```
17
17
 
18
18
  ツリー構造
19
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-08-18/994a80e8-543c-4397-b2e5-09429399b8c9.png)
20
-
21
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-08-18/70a06e18-b2cc-4333-8a5c-01ff62344e55.png)
19
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-08-18/86312f48-0516-4bfd-8017-11c143d5a788.png)
20
+
21
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-08-18/623760b5-2ce8-49da-b99d-d37057efca17.png)
22
+
22
23
  ### 該当のソースコード
23
24
 
24
- ```
25
+
25
26
  ```/backend/app/controllers/todos_controller.rb
26
27
  class TodosController < ApplicationController
27
28
 

3

修正

2024/08/17 17:24

投稿

gabakugik
gabakugik

スコア13

test CHANGED
File without changes
test CHANGED
@@ -16,7 +16,7 @@
16
16
  ```
17
17
 
18
18
  ツリー構造
19
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-08-18/a2f2403f-5b9e-46a3-89f2-b6a41f863193.png)
19
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-08-18/994a80e8-543c-4397-b2e5-09429399b8c9.png)
20
20
 
21
21
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-08-18/70a06e18-b2cc-4333-8a5c-01ff62344e55.png)
22
22
  ### 該当のソースコード

2

修正

2024/08/17 17:23

投稿

gabakugik
gabakugik

スコア13

test CHANGED
@@ -1 +1 @@
1
- next.jsでEdit仕方が分からない
1
+ next.jsでEditとshow仕方が分からない
test CHANGED
@@ -1,33 +1,24 @@
1
1
  ### 実現したいこと
2
2
 
3
- マルチポストです。qiitaで一週間回答を求めたんですが....
3
+ qiitaで一週間回答を求めたんですが....
4
4
  答えにたどり着けず.....
5
5
 
6
6
  解決したいこと
7
7
  https://qiita.com/gabakugik/items/b0fcc09158d336e9e2a8
8
8
  の続きです。
9
- Editボタンを押したら更新されないのをなんとかしたい。
9
+
10
-
11
- Nexts.jsとRuby on RailsでCRUDWebアプリをつくっています。
12
- Editボタンを押すと飛ぶようになりましたが更新ができません。
13
- 解決方法を教えて下さい。
14
- またツリー構造に書きますが、page.tsxが2つ必要になりました。
15
- 一つにまとめたい。
16
-
17
- この情報が欲しいとかあれば出しますのでよろしくお願いします。
18
10
 
19
11
 
20
12
  ### 発生している問題・エラーメッセージ
21
13
 
22
14
  ```
23
- 更新ができ
15
+ updateボタンを押すとLoading画面にる。
24
16
  ```
25
17
 
26
18
  ツリー構造
27
-
19
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-08-18/a2f2403f-5b9e-46a3-89f2-b6a41f863193.png)
20
+
28
- ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270337/f6759efe-e63a-bf1a-387f-642067af6950.png)
21
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-08-18/70a06e18-b2cc-4333-8a5c-01ff62344e55.png)
29
-
30
-
31
22
  ### 該当のソースコード
32
23
 
33
24
  ```
@@ -225,7 +216,7 @@
225
216
  export default EditTodoForm;
226
217
 
227
218
  ```
228
- ```/frontend/app/app/todos/[id]/edit/edit.tsx
219
+ ```/frontend/app/app/todos/[id]/edit/ぱげ.tsx
229
220
  "use client"
230
221
 
231
222
  import { useRouter } from 'next/router';
@@ -257,63 +248,40 @@
257
248
  );
258
249
  };
259
250
 
251
+ ```/frontend/app/todos/[id]/edit/page.tsx
252
+ "use client";
253
+
254
+ import { useSearchParams } from 'next/navigation';
255
+ import Link from 'next/link';
256
+ import EditTodoForm from '@/components/EditTodoForm';
257
+
258
+ const EditTodoPage = () => {
259
+ // Use useSearchParams to retrieve the id from the URL
260
+ const searchParams = useSearchParams();
261
+ const id = searchParams.get('id');
262
+
263
+ // Display loading state until id is available
264
+ if (!id) {
265
+ return <div>Loading...</div>;
266
+ }
267
+
268
+ return (
269
+ <div className="flex justify-center items-center">
270
+ <div className="flex flex-col w-3/4 max-w-lg">
271
+ <EditTodoForm id={parseInt(id)} />
272
+ <Link
273
+ href="/"
274
+ className="ml-auto font-medium text-blue-600 hover:bg-blue-300 focus:outline-none"
275
+ >
276
+ Back
277
+ </Link>
278
+ </div>
279
+ </div>
280
+ );
281
+ };
282
+
260
283
  export default EditTodoPage;
261
- ```
284
+
262
-
263
- ```/frontend/app/app/todos/[id]/edit/page.tsx
264
- "use client";
265
-
266
- import { useEffect, useState } from 'react';
267
- import { useRouter } from 'next/navigation';
268
- import useSWR from 'swr';
269
- import Link from 'next/link';
270
- import Todo from '@/components/Todo';
271
- import { TodoType } from '@/types/Todo';
272
- import axios from 'axios';
273
-
274
- // Fetcher function for SWR
275
- const fetcher = (url: string) => axios.get(url).then(res => res.data);
276
-
277
- // Todo詳細ページを表示するコンポーネント
278
- const TodoDetail = ({ params }: { params: { id: string } }) => {
279
- // ルーティング情報を取得する
280
- const router = useRouter();
281
- const { id } = params;
282
-
283
- // SWRを使ってデータを取得する
284
- const { data: todo, error } = useSWR<TodoType>(id ? `http://localhost:3000/todos/${id}` : null, fetcher);
285
-
286
- // エラーが発生した場合の処理
287
- if (error) return <div>Failed to load</div>;
288
-
289
- // Todoを取得中の場合は「Loading...」を表示する
290
- if (!todo) return <div>Loading...</div>;
291
-
292
- return (
293
- <div className="flex justify-center items-center">
294
- <div className="flex flex-col space-y-6 w-3/4 max-w-lg pt-10">
295
- <label className="block text-xl font-bold text-gray-700">Todo</label>
296
- <Todo todo={todo} />
297
- <div className="flex justify-end">
298
- <Link
299
- href={`/todos/${id}/edit`}
300
- className="mt-auto font-medium text-blue-600 hover:bg-blue-300 focus:outline-none mr-12"
301
- >
302
- Edit
303
- </Link>
304
- <Link
305
- href="/"
306
- className="mt-auto font-medium text-blue-600 hover:bg-blue-300 focus:outline-none"
307
- >
308
- Back
309
- </Link>
310
- </div>
311
- </div>
312
- </div>
313
- );
314
- };
315
-
316
- export default TodoDetail;
317
285
 
318
286
  ```
319
287
 

1

修正

2024/08/14 17:49

投稿

gabakugik
gabakugik

スコア13

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 実現したいこと
2
2
 
3
3
  マルチポストです。qiitaで一週間回答を求めたんですが....
4
- うまくいか
4
+ 答えにたどり着け.....
5
5
 
6
6
  解決したいこと
7
7
  https://qiita.com/gabakugik/items/b0fcc09158d336e9e2a8