質問編集履歴

2

記述の変更

2021/01/13 17:27

投稿

yasunsun
yasunsun

スコア2

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,9 @@
10
10
 
11
11
  ###実現したいこと
12
12
 
13
- `topicId`の値を取得したいです。
13
+ `post.js`で`topicId`の値を取得したいです。
14
+
15
+ `posts/index`8行目の`<div class="post" data-id = <%= @topic.id %>>`からidを渡します。
14
16
 
15
17
 
16
18
 
@@ -20,6 +22,50 @@
20
22
 
21
23
  const posts = document.querySelectorAll(".post");
22
24
 
25
+ const topicId = posts.getAttribute("data-id");
26
+
27
+ const formData = new FormData(document.getElementById("form"));
28
+
29
+ const XHR = new XMLHttpRequest();
30
+
31
+ XHR.open("POST", `/topics/${topicId}/posts`, true);
32
+
33
+ ```
34
+
35
+
36
+
37
+ ### 発生している問題・エラーメッセージ
38
+
39
+ ・post.js 4, 5行目
40
+
41
+ `const posts = document.querySelectorAll(".post");`で`class = post`を取得して、
42
+
43
+ そこから`const topicId = posts.getAttribute("data-id");`で`data-id`を取得しようと試みました。
44
+
45
+ しかし、`topicId`の値が取得できずコンソールにエラーが表示されます。
46
+
47
+ ```Console
48
+
49
+ Uncaught TypeError: post.getAttribute is not a function
50
+
51
+ ```
52
+
53
+
54
+
55
+ ### 該当のソースコード
56
+
57
+ ・post.js
58
+
59
+ ```JavaScript
60
+
61
+ function post() {
62
+
63
+ const submit = document.getElementById("submit");
64
+
65
+ submit.addEventListener("click", (e) => {
66
+
67
+ const posts = document.querySelectorAll(".post");
68
+
23
69
  const topicId = posts.getAttribute("data-id");
24
70
 
25
71
  const formData = new FormData(document.getElementById("form"));
@@ -28,48 +74,6 @@
28
74
 
29
75
  XHR.open("POST", `/topics/${topicId}/posts`, true);
30
76
 
31
- ```
32
-
33
-
34
-
35
- ### 発生している問題・エラーメッセージ
36
-
37
- ・post.js 8行目
38
-
39
- クラスのpostを取得して、そこからdata-idを取得しようと試みました。
40
-
41
- しかし、`topicId`の値が取得できずコンソールにエラーが表示されます。
42
-
43
- ```Console
44
-
45
- Uncaught TypeError: post.getAttribute is not a function
46
-
47
- ```
48
-
49
-
50
-
51
- ### 該当のソースコード
52
-
53
- ・post.js
54
-
55
- ```JavaScript
56
-
57
- function post() {
58
-
59
- const submit = document.getElementById("submit");
60
-
61
- submit.addEventListener("click", (e) => {
62
-
63
- const posts = document.querySelectorAll(".post");
64
-
65
- const topicId = posts.getAttribute("data-id");
66
-
67
- const formData = new FormData(document.getElementById("form"));
68
-
69
- const XHR = new XMLHttpRequest();
70
-
71
- XHR.open("POST", `/topics/${topicId}/posts`, true);
72
-
73
77
  XHR.responseType = "json";
74
78
 
75
79
  XHR.send(formData);

1

タイトル、記述の変更

2021/01/13 17:27

投稿

yasunsun
yasunsun

スコア2

test CHANGED
@@ -1 +1 @@
1
- 【Ruby】掲示板アプリの非同期通信を可能にしたいです
1
+ 【Ruby, JavaScript】掲示板アプリの非同期通信を可能にしたいです
test CHANGED
@@ -1,4 +1,4 @@
1
- ### 前提・実現したいこと
1
+ ### 前提
2
2
 
3
3
  `Ruby on Rails 6.0.0`で掲示板アプリを作っています。
4
4
 
@@ -8,38 +8,50 @@
8
8
 
9
9
 
10
10
 
11
+ ###実現したいこと
12
+
13
+ `topicId`の値を取得したいです。
14
+
15
+
16
+
17
+ ・post.js 4~8行目
18
+
19
+ ```JavaScript
20
+
21
+ const posts = document.querySelectorAll(".post");
22
+
23
+ const topicId = posts.getAttribute("data-id");
24
+
25
+ const formData = new FormData(document.getElementById("form"));
26
+
27
+ const XHR = new XMLHttpRequest();
28
+
29
+ XHR.open("POST", `/topics/${topicId}/posts`, true);
30
+
31
+ ```
32
+
33
+
34
+
11
35
  ### 発生している問題・エラーメッセージ
12
36
 
37
+ ・post.js 8行目
38
+
39
+ クラスのpostを取得して、そこからdata-idを取得しようと試みました。
40
+
13
- `Topic`と`Post`はルーティングでネストを組んでいます。
41
+ しかし、`topicId`の値が取得できずコンソーにエラが表示されます。
14
-
42
+
15
- 送信ボタンを押すと以下のエラーが表示されます。
43
+ ```Console
16
-
44
+
17
- `/topics/null/posts 404 (Not Found)`
45
+ Uncaught TypeError: post.getAttribute is not a function
18
-
46
+
19
- `topicId`がnullになります。
47
+ ```
20
-
21
-
22
-
48
+
49
+
50
+
23
- ###試したこと
51
+ ### 該当のソースコード
24
52
 
25
53
  ・post.js
26
54
 
27
- 4行目の`const topicId = submit.getAttribute("data-id");`で`topicId`を定義します。
28
-
29
- 7行目のXHR.open("POST", `/topics/${topicId}/posts`, true);を使って`topicId`の値を取得しようとしました。
30
-
31
- しかし、`/topics/null/posts 404 (Not Found)`のエラーが表示されます。
32
-
33
- `topicId`がnullになります。
34
-
35
-
36
-
37
-
38
-
39
- ### 該当のソースコード
40
-
41
- ・post.js
42
-
43
55
  ```JavaScript
44
56
 
45
57
  function post() {
@@ -48,7 +60,9 @@
48
60
 
49
61
  submit.addEventListener("click", (e) => {
50
62
 
63
+ const posts = document.querySelectorAll(".post");
64
+
51
- const topicId = submit.getAttribute("data-id");
65
+ const topicId = posts.getAttribute("data-id");
52
66
 
53
67
  const formData = new FormData(document.getElementById("form"));
54
68
 
@@ -134,7 +148,7 @@
134
148
 
135
149
  <% @posts.each do |post| %>
136
150
 
137
- <div class="post">
151
+ <div class="post" data-id = <%= @topic.id %>>
138
152
 
139
153
  <span class="name">
140
154